Foxtable(狐表)用户栏目专家坐堂 → 双条件出库流水账


  共有2089人关注过本帖树形打印复制链接

主题:双条件出库流水账

帅哥哟,离线,有人找我吗?
benwong2013
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:4069 威望:0 精华:0 注册:2015/12/16 8:22:00
双条件出库流水账  发帖心情 Post By:2016/8/3 14:13:00 [只看该作者]

如下图,
表A,编号A,编号B,数量
表B,编号A,编号B,出库数量,未用数量

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

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:4069 威望:0 精华:0 注册:2015/12/16 8:22:00
  发帖心情 Post By:2016/8/3 17:59:00 [只看该作者]

请问如表出现这样的问题是什么问题?

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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/3 18:01:00 [只看该作者]

 那你就把 _Sortkey 改成 _Identify

 回到顶部
帅哥哟,离线,有人找我吗?
benwong2013
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:4069 威望:0 精华:0 注册:2015/12/16 8:22:00
  发帖心情 Post By:2016/8/3 18:03:00 [只看该作者]

好的,刚才已经找到了,设置标志列就可以了;

 回到顶部