Foxtable(狐表)用户栏目专家坐堂 → 求解决一个麻烦点的跨表计算填入问题


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

主题:求解决一个麻烦点的跨表计算填入问题

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 8:11:00 [只看该作者]

 回复10楼,我测试没问题,请上传实例测试。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 8:16:00 [只看该作者]

回复9楼,运行代码,可以得到数据,然后你删除即可

 

DataTables("出库表").LoadFilter = "数量 in (Select 数量*-1  from {出库表} )"
DataTables("出库表").Load


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


加好友 发短信
等级:幼狐 帖子:164 积分:2002 威望:0 精华:0 注册:2008/9/7 0:06:00
  发帖心情 Post By:2017/6/27 9:10:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例子.rar
密码888


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 10:45:00 [只看该作者]

Dim t As Table = Tables("入库材料表")
t.ResumeRedraw
t.StopRedraw
For Each dc As Col In t.Cols
    If dc.Name.Contains("HGQC") OrElse dc.name.Contains("L") Then
        t.DataTable.ReplaceFor(dc.name, Nothing)
    End If
Next
Dim temp = DataTables("入库材料表").DataCols("剩余数量").Expression
DataTables("入库材料表").DataCols("剩余数量").Expression = ""
For Each dr As DataRow In DataTables("出库统计表").Select("")
    Dim sum As Double = dr("实发数量")
    Dim drs = DataTables("入库材料表").Select("商品长代码 = '" & dr("商品长代码") & "' and 商品名称 = '" & dr("商品名称") & "'", "单据编号")
    For i As Integer = 1 To drs.Count-1
        If drs(i)("实收数量") = -drs(i-1)("实收数量") Then
            drs(i-1)("单位") = "对冲"
            drs(i)("单位") = "对冲"
            i += 1
        Else
            drs(i-1)("单位") = Nothing
        End If
    Next
   
    For Each cdr As DataRow In drs
        If cdr("单位") <> "对冲" Then
            Dim sysl As Double = 0
            For Each dc As Col In t.Cols
                If dc.Name.Contains("HGQC") OrElse dc.name.Contains("L") Then
                    sysl += cdr(dc.name)
                End If
            Next
            
            If cdr("实收数量")-sysl > 0 Then
                If sum >= (cdr("实收数量")-sysl) Then
                    sum = sum - (cdr("实收数量")-sysl)
                    cdr(dr("项目简码")) += cdr("实收数量")-sysl
                Else
                    cdr(dr("项目简码")) += sum
                    sum = 0
                    Exit For
                End If
            End If
        End If
    Next
    If sum = 0 Then
        dr("使用库存数量") = Nothing
    Else
        dr("使用库存数量") = sum
    End If
Next
DataTables("入库材料表").DataCols("剩余数量").Expression = temp
t.ResumeRedraw

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


加好友 发短信
等级:幼狐 帖子:164 积分:2002 威望:0 精华:0 注册:2008/9/7 0:06:00
  发帖心情 Post By:2017/7/2 15:53:00 [只看该作者]

代码添加了2个条件,入库有fa piao的,出库显示勾稽的才勾减数量,
我的代码执行还是勾全部项目材料了


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170702154453.jpg
图片点击可在新窗口打开查看


Dim t As Table = Tables("入库材料表")
t.ResumeRedraw
t.StopRedraw
For Each dc As Col In t.Cols
    If dc.Name.Contains("A") OrElse dc.name.Contains("H") OrElse dc.name.Contains("X") Then
        t.DataTable.ReplaceFor(dc.name, Nothing)
    End If
Next
Dim temp = DataTables("入库材料表").DataCols("剩余数量").Expression
DataTables("入库材料表").DataCols("剩余数量").Expression = ""
For Each dr As DataRow In DataTables("出库统计表").Select("")
    Dim sum As Double = dr("实发数量")
    Dim drs = DataTables("入库材料表").Select("商品长代码 = '" & dr("商品长代码") & "' and 商品名称 = '" & dr("商品名称") & "'", "单据编号")
    For i As Integer = 1 To drs.Count-1
        If drs(i)("实收数量") = -drs(i-1)("实收数量") Then
            drs(i-1)("单位") = "对冲"
            drs(i)("单位") = "对冲"
            i += 1
        Else
            drs(i-1)("单位") = Nothing
        End If
    Next
    
    For Each cdr As DataRow In drs
        If cdr("单位") <> "对冲" Then
          If cdr("fa piao号码") <> "" Then'fa piao为空的不勾稽
            Dim sysl As Double = 0
            For Each dc As Col In t.Cols
                If dc.Name.Contains("A") OrElse dc.name.Contains("H") OrElse dc.name.Contains("X") Then
                    sysl += cdr(dc.name)
                   End If               
            Next
            If cdr("实收数量")-sysl > 0 Then
              If dr("勾稽标签") = "勾稽" Then'勾稽标签显示勾稽的项目材料才勾选数量
                If sum >= (cdr("实收数量")-sysl) Then
                    sum = sum - (cdr("实收数量")-sysl)
                    cdr(dr("项目简码")) += cdr("实收数量")-sysl
                Else
                    cdr(dr("项目简码")) += sum
                    sum = 0
                    Exit For
                      End If
                   End If
                End If
            End If
        End If
    Next
    If sum = 0 Then
        dr("使用库存数量") = Nothing
    Else
        dr("使用库存数量") = sum
    End If
Next
DataTables("入库材料表").DataCols("剩余数量").Expression = temp
t.ResumeRedraw

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/2 16:59:00 [只看该作者]

条件加在这里

 

For Each dr As DataRow In DataTables("出库统计表").Select("勾稽标签 = '勾稽'")


 回到顶部
总数 16 上一页 1 2