求解示例文件中“流水账”演示文件的表达式
那位高手哪在每句后面给加上注解,让我这新手能更容易加深理解
例子二_DataColChanged
Select Case e.DataCol.Name
Case "产品","入库","出库"
Dim drs As List(of DataRow)
Dim Filter As String
Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [产品] = '" & e.DataRow("产品") & "'"
drs = e.DataTable.Select(Filter)
For Each dr As DataRow In drs
Filter = "[_SortKey] <= " & dr("_SortKey") & " 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 & "'"
drs = e.DataTable.Select(Filter)
For Each dr As DataRow In drs
Filter = "[_SortKey] <= " & dr("_SortKey") & " 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
例子二_DataRowDeleting
e.DataRow("入库") = 0
e.DataRow("出库") = 0
例子二_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("产品") & "'"
e.Table.DataTable.DataCols("入库").RaiseDataColChanged(Filter)