网络环境的话,这段代码是有问题的,因为各个人算的都是自己加载的数据,别人新加的数据并没有计算在内的。
方法一:你重置列 http://www.foxtable.com/help/topics/2237.htm
方法二:用sqlFind查询行
Dim dr As DataRow '定义一个其它行(没发生变化的行;这里用来表示被查找的上一行)
Dim mr As DataRow = e.DataRow '定义一个发生变化的行
dr = e.DataTable.sqlFind("[_Identify] < " & mr("_Identify") & " and [物料编码] = '" & mr("物料编码") & "' And [移动单元] = '" & mr("移动单元") & "'","[_Identify] desc")
If dr Is Nothing Then '主动单元行向上没找到,那本行就是第一行
mr("结存") = mr("移动数量") ''当前变化的行的值=当前变化行的值
Else '主动单元向上找到了
mr("结存") = dr("结存") + mr("移动数量") '当前变化行的值=找到的行的结存值+当前变化行的数量值
End If
同时,你要在DataRowAdded事件写代码 e.DataRow.Save