以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84228)

--  作者:674140303
--  发布时间:2016/4/26 12:00:00
--  [求助]
“区分产品的流水账”实例中,我想再加一个仓库的字段,可以按不同仓库区分商品库存。求高手指点如何实现?
--  作者:大红袍
--  发布时间:2016/4/26 12:27:00
--  
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 仓库 = \'" & e.DataRow("仓库") & "\'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(入库)",Filter)
            Dim Val2 As Double = e.DataTable.Compute("Sum(出库)",Filter)
            dr("库存") = Val1 - Val2
        Next
        filter = ""
        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.DataRow("仓库") & "\'"
        ElseIf e.DataCol.Name = "仓库" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            Filter = "[_SortKey] > " & e.DataRow("_SortKey") & " And [产品] = \'" & e.DataRow("产品") & "\' and 仓库 = \'" & e.Oldvalue & "\'"
        End If
        if filter > "" then
            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

--  作者:674140303
--  发布时间:2016/4/27 10:25:00
--  
谢谢!