做了个功能窗口,期中的的个按钮代码如下:
Dim cj =e.Form.Controls("ComboBox1").Value
Dim data As Date=e.Form.Controls("DateTimePicker1").value
Dim cj2 = data.Year & Format(data.Month,"00")
Dim drs As List(of DataRow)
If cj <> cj2 Then
Dim List As List(of String)
Dim dr1 As DataRow
List = DataTables("订单生产安排供需流水账").GetUniqueValues("[会计期间]= '" & cj &"'" ,"料品编码")
Dim st As Date = Date.Now
DataTables("订单生产安排供需流水账").LoadFilter = "[会计期间] in ('" & cj & "','" & cj2 & "')"
DataTables("订单生产安排供需流水账").Load()
Dim dr2 As DataRow=DataTables("订单生产安排供需流水账").Find("[会计期间] = '" & cj2 & "'","[会计期间] Desc")
If dr2 IsNot Nothing Then
drs = DataTables("订单生产安排供需流水账").Select("[会计期间] = '" & cj2 & "'and [摘要] = '期初结存'")
For i As Integer = 0 To drs.Count - 1
drs(i).Locked = False
Next
DataTables("订单生产安排供需流水账").DeleteFor("[会计期间] = '" & cj2 & "'and [摘要] = '期初结存'")
With CurrentTable
Dim r As Integer
r = .Find( "' & cj2 & '", 0, "会计期间", False, False, True)
If r > - 1 Then '如果找到符合条件的行
.Position = r '则选择该行
End If
End With
DataTables("订单生产安排供需流水账").StopRedraw()
For ii As Integer = List.Count - 1 To 0 Step -1
Dim dr As Row = Tables("订单生产安排供需流水账").InsertNew()
dr("摘要")="期初结存"
dr("日期") = e.Form.Controls("DateTimePicker1").value
dr("料品编码") = List (ii)
dr1 = DataTables("订单生产安排供需流水账").Find("[会计期间] = '" & cj & "' And [料品编码] = '" & dr("料品编码") & "'and [_sortkey] < " & dr("_sortkey") ,"[日期] Desc, [_SortKey] Desc")
dr.DataRow("结存量")=dr1("结存量")
dr.Locked = True
Next
DataTables("订单生产安排供需流水账").ResumeRedraw()
MessageBox.Show("结转完成,总耗时: " & (Date.Now - st).TotalSeconds & "秒","提示") '计算并显示执行代码所花费的秒数
Else
DataTables("订单生产安排供需流水账").StopRedraw()
For u As Integer = 0 To List.Count - 1
Dim dr As DataRow = DataTables("订单生产安排供需流水账").AddNew()
dr("摘要")="期初结存"
dr("日期") = e.Form.Controls("DateTimePicker1").value
dr("料品编码") = List (u)
dr1 = DataTables("订单生产安排供需流水账").Find("[会计期间] = '" & cj & "' And [料品编码] = '" & dr("料品编码") & "'and [_sortkey] < " & dr("_sortkey") ,"[日期] Desc,[_SortKey] Desc")
dr("结存量")=dr1("结存量")
dr.Locked = True
Next
DataTables("订单生产安排供需流水账").ResumeRedraw()
MessageBox.Show("结转完成,总耗时: " & (Date.Now - st).TotalSeconds & "秒","提示") '计算并显示执行代码所花费的秒数
End If
Else
MessageBox.Show("你选择的下个期间的第一天有误,请重新选择正确的日期!","提示", MessageBoxButtons.OK ,MessageBoxIcon.Information)
End If
执行一次上面的代码,没出错,如果第二次执行就出错提示如下图所示的信息!
此主题相关图片如下:02.jpg

我怀疑是红色部份的代码有问题,但测试了好几次都不成功,想不明白到底是什么原因。
[此贴子已经被作者于2010-12-23 14:06:31编辑过]