我做了个流水账,用外部数据源做的,在测试的时候AfterMoveRow表事件的代码不执行
然后想将其发到论坛来求助,谁知在定向到内部表后AfterMoveRow表事件的代码却执行了(难道内部表和外部表有什么不同的地方?)!
真怪,想不出是什么原因。外部数据源是用SQL Server
密码都是123
此主题相关图片如下:03.jpg

"订单生产安排供需流水账"表里的
DataColChanged 事件代码:
Select Case e.DataCol.Name
Case "日期"
e.DataRow("会计期间")=e.DataRow("日期").Year & Format(e.DataRow("日期").Month,"00")
Case "料品编码","会计期间","订单需求量","生产供给量","摘要"
Dim dr As DataRow
dr = DataTables("料品基础数据表").Find("料品编码 = '" & e.DataRow("料品编码") & "'" )
If dr IsNot Nothing '如果找到, 则设置各列内容
e.DataRow("每一打的公斤数")= dr("库存打数换算")
e.DataRow("最低安全库存量")= dr("最低安全库存量")
e.DataRow("通用范围")= dr("通用范围")
e.DataRow("料品归类")= dr("料品归类")
e.DataRow("料品名称")= dr("料品名称")
e.DataRow("料品规格")= dr("料品规格")
e.DataRow("库存单位")= dr("库存单位")
Else
'否则清除部门和姓名两列的内容
e.DataRow("每一打的公斤数") =Nothing
e.DataRow("最低安全库存量") =Nothing
e.DataRow("通用范围")= Nothing
e.DataRow("料品归类")= Nothing
e.DataRow("料品名称")= Nothing
e.DataRow("料品规格")= Nothing
e.DataRow("库存单位")= Nothing
End If
Dim dr1 As DataRow
Dim mr As DataRow = e.DataRow
Dim drs As List(of DataRow)
dr1 = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [会计期间] = '" & mr("会计期间") & "'and [料品编码] = '" & mr("料品编码") & "'", "[_SortKey] Desc")
If dr1 Is Nothing Then '如果没有上一行,说明本行就是同产品的第一行
If mr("摘要")="期初结存" Then '这里的用意是本流水账是按每个会计期间来结账的,就是每个会计期间都有一个“期初结存”,这样用户从数
据库里加载数据的时候只要加载一个会计期间的数据就能正常计算了。当然如果到了要处理下一个会计期间
时就要做个结账处理:将当期的每个产品的结存结转到下一个会计期间的期初结存里。
Return
Else
mr("结存量") = mr("生产供给量") - mr("订单需求量")
dr1 = mr
End If
End If
drs = e.DataTable.Select("[_SortKey] >= " & dr1("_SortKey") & " And [会计期间] = '" & dr1("会计期间") & "'and [料品编码] = '" & dr1("料品编码") & "'")
For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
drs(i)("结存量") = drs(i-1)("结存量") + drs(i)("生产供给量") - drs(i)("订单需求量")
Next '当然这里的代码还未能想到同一个会计期间里的日期比较,如:这个会计期间里如果同一天里同一款产品都有数据的时候。
Case "结存量","库存单位","每一打的公斤数"
Select Case e.DataRow("库存单位")
Case "公斤","千克"
e.DataRow("公斤数")= e.DataRow("结存量")
Case Else
e.DataRow("公斤数")= e.DataRow("结存量")*e.DataRow("每一打的公斤数")
End Select
End Select
"订单生产安排供需流水账"表里的
AfterMoveRow 事件代码:
Dim Key As Decimal
Dim Index As Integer
Dim Filter As String
Dim r As Row
Index = Math.Min(e.OldIndex, e.NewIndex)
Key = e.Table.Rows(Index)("_SortKey")
r = e.Table.Rows(e.NewIndex)
Filter = "[_SortKey] >= " & Key & " And [会计期间] = '" & r("会计期间") & "'and [料品编码] = '" & r("料品编码") & "'"
e.Table.DataTable.DataCols("料品编码").RaiseDataColChanged(Filter)
[此贴子已经被作者于2010-12-20 8:24:34编辑过]