计算的代码如下Select Case e.DataCol.Name
Case "物资名称","入库","出库"
Dim drs As List(of DataRow)
Dim Filter As String
Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [物资名称] = '" & e.DataRow("物资名称") & "'And [规格型号] = '" & e.DataRow("规格型号") & "'"
drs = e.DataTable.Select(Filter)
For Each dr As DataRow In drs
Filter = "[_SortKey] <= " & dr("_SortKey") & " And [物资名称] = '" & dr("物资名称") & "'And [规格型号] = '" & dr("规格型号") & "'"
Dim Val1 As Double = e.DataTable.Compute("Sum(入库)",Filter)
Dim Val2 As Double = e.DataTable.Compute("Sum(出库)",Filter)
dr("库存") = Val1 - Val2
Next
If e.DataCol.Name = "物资名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
Filter = "[_SortKey] > " & e.DataRow("_SortKey") & " And [物资名称] = '" & e.OldValue & "'And [规格型号] = '" & e.OldValue & "'"
drs = e.DataTable.Select(Filter)
For Each dr As DataRow In drs
Filter = "[_SortKey] <= " & dr("_SortKey") & " And [物资名称] = '" & dr("物资名称") & "' And [规格型号] = '" & dr("规格型号") & "'"
Dim Val1 As Double = e.DataTable.Compute("Sum(入库)",Filter)
Dim Val2 As Double = e.DataTable.Compute("Sum(出库)",Filter)
dr("库存") = Val1 - Val2
Next
End If
End Select
如果在库存明细表中手动输入都能自动运算,但是入库\出库数据都是从其他表填充过来的,代码如下:
Dim f As New Filler
f.SourceTable = DataTables("销售明细") '指定数据来源
f.SourceCols = "单号,物资名称,规格型号,购货方,销售日期,年度,数量" '指定数据来源列
f.DataTable = DataTables("库存明细表") '指定数据接收表
f.DataCols = "购货编号,物资名称,规格型号,购货方,日期,年度,出库" '指定数据接收列
f.Fill() '填充数据
DataTables("库存明细表").Save()
数据填充过来后不会自动计算库存,如果数据填充在出库,就得手动在入库输个0才能得出余额
求指导