以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  双条件出库流水账  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88462)

--  作者:benwong2013
--  发布时间:2016/8/3 14:13:00
--  双条件出库流水账
如下图,
表A,编号A,编号B,数量
表B,编号A,编号B,出库数量,未用数量

当表B,输入的编号A、编号B与表A的条件相同时,将取用表A对应的数量-表B出库数量,而表B显示是目前未用数量;

这样的流水账根据帮助的写不出来,请赐教;

图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2016/8/3 16:03:00
--  

参考代码

 

Select Case e.DataCol.name
   
    Case "第一列","第二列", "第三列"
        Dim drs As List(of DataRow)
        Dim Filter As String
        filter = "[第一列] = \'" & e.DataRow("第一列") & "\' and 第二列 = \'" & e.DataRow("第二列") & "\'"
        Dim qc As Double = 0
       
        Dim fdr As DataRow = DataTables("表A").Find(filter)
        If fdr IsNot Nothing Then
            qc = fdr("第三列")
        End If
        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 [第一列] = \'" & e.DataRow("第一列") & "\' and 第二列 = \'" & e.DataRow("第二列") & "\'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(第三列)",Filter)
            dr("第四列") = qc - Val1
        Next
        If (e.DataCol.name = "第一列" OrElse e.DataCol.name = "第二列") And  e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            If e.DataCol.Name = "第一列" Then
                Filter = "[第一列] = \'" & e.oldvalue & "\' and 第二列 = \'" & e.DataRow("第二列") & "\'"
            ElseIf e.DataCol.name = "第二列" Then
                Filter = "[第一列] = \'" & e.DataRow("第一列") & "\' and 第二列 = \'" & e.oldvalue & "\'"
            End If
            drs = e.DataTable.Select("[_SortKey] > " & e.DataRow("_SortKey") & " and " & Filter)
            For Each dr As DataRow In drs
                Filter = "[_SortKey] <= " & dr("_SortKey") & " And " & filter
                Dim Val1 As Double = e.DataTable.Compute("Sum(第三列)",Filter)
                dr("第四列") = Val1
            Next
        End If
End Select


--  作者:benwong2013
--  发布时间:2016/8/3 17:59:00
--  
请问如表出现这样的问题是什么问题?

.NET Framework 版本:2.0.50727.5472
Foxtable 版本:2016.7.23.1
错误所在事件:表,表B, DataColChanged
详细错误信息:
调用的目标发生了异常。
列“_SortKey”不属于表 表B。


--  作者:大红袍
--  发布时间:2016/8/3 18:01:00
--  
 那你就把 _Sortkey 改成 _Identify
--  作者:benwong2013
--  发布时间:2016/8/3 18:03:00
--  
好的,刚才已经找到了,设置标志列就可以了;