以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求解示例文件中的表达式  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=15622)

--  作者:chan1997
--  发布时间:2012/1/3 21:08:00
--  求解示例文件中的表达式
 

 求解示例文件中“流水账”演示文件的表达式

 

那位高手哪在每句后面给加上注解,让我这新手能更容易加深理解

 

 

 

 

 

 例子二_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)