Select Case e.DataCol.Name
Case "出入库数量"
'自动计算余数
Dim dr As DataRow
Dim mr As DataRow = e.DataRow
Dim drs As List(of DataRow)
dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [物料编号] = '" & mr("物料编号") & "'", "[_SortKey] Desc")
If dr Is Nothing OrElse dr("_Identify") = mr("_Identify") Then
mr("余数") = mr("出入库数量")
dr = mr
End If
drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [物料编号] = '" & dr("物料编号") & "'", "[_SortKey]")
For i As Integer = 1 To drs.Count - 1
drs(i)("余数") = drs(i-1)("余数") + drs(i)("出入库数量")
If drs(i)("出入年月") = drs(i-1)("出入年月") Then
drs(i)("上行余数") = Nothing
Else
drs(i)("上行余数") = drs(i-1)("余数")
End If
Next
end select
这是第一段。
If e.DataCol.name = "出入库数量" Then
e.DataRow.save '必须先保存,后面SQL才能统计到此数据的变化
If user.Group = "仓库" OrElse user.Group = "组装仓库" OrElse user.Group = "仓库(铝巴)" OrElse user.Group = "品质" OrElse user.Group = "品质工程师" OrElse user.name = "开发者"Then
DataTables("物料字典").DataCols("物料编号").RaiseDataColChanged("物料编号 = '" & e.DataRow("物料编号") & "'")
DataTables("出入库单总表").DataCols("出入库单号").RaiseDataColChanged("出入库单号 = '" & e.DataRow("出入库单号") & "'")
End If
End If
这是第二段。
总共就这两段由"出入库数量"触发的代码。这两段代码平时运作都是正常的。