以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求解决一个麻烦点的跨表计算填入问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102732)

--  作者:qctv
--  发布时间:2017/6/24 20:25:00
--  求解决一个麻烦点的跨表计算填入问题
解决一个跨表计算的问题:从出库表中选取对应项目使用的对应材料在物料表中进行扣减,要求从每张对应物料的发票中顺序扣减,扣减数量填入到对应的【项目×使用数量列】,发票上剩余数量不能为负数。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目12.foxdb


--  作者:有点色
--  发布时间:2017/6/25 12:38:00
--  

 参考代码

 

For Each dr As DataRow In DataTables("出库表").Select("")
    Dim sum As Double = dr("数量")
    For Each cdr As DataRow In DataTables("物料表").Select("物料编号 = \'" & dr("物料编号") & "\' and 名称 = \'" & dr("名称") & "\'", "发票号")
        Dim sysl As Double = cdr("项目A使用数量") + cdr("项目B使用数量") + cdr("项目C使用数量")
        If sum >= (cdr("数量")-sysl) Then
            \'cdr("发票上剩余数量") = 0
            sum = sum - (cdr("数量")-sysl)
            cdr(dr("项目") & "使用数量") += cdr("数量")-sysl
        Else
            \'cdr("发票上剩余数量") = cdr("数量")-sysl-sum
            cdr(dr("项目") & "使用数量") += sum
            Exit For
        End If
    Next
Next


--  作者:qctv
--  发布时间:2017/6/25 21:22:00
--  版主大大的代码正确哟
但我发现如果出库材料比实际采购的材料多,我加了一列欠缺材料,可以把欠缺的数量显示出来吗?
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170625211254.jpg
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/6/26 8:53:00
--  
For Each dr As DataRow In DataTables("出库表").Select("")
    Dim sum As Double = dr("数量")
    For Each cdr As DataRow In DataTables("物料表").Select("物料编号 = \'" & dr("物料编号") & "\' and 名称 = \'" & dr("名称") & "\'", "发票号")
        Dim sysl As Double = cdr("项目A使用数量") + cdr("项目B使用数量") + cdr("项目C使用数量")
        If sum >= (cdr("数量")-sysl) Then
            \'cdr("发票上剩余数量") = 0
            sum = sum - (cdr("数量")-sysl)
            cdr(dr("项目") & "使用数量") += cdr("数量")-sysl
        Else
            \'cdr("发票上剩余数量") = cdr("数量")-sysl-sum
            cdr(dr("项目") & "使用数量") += sum
            sum = 0
            Exit For
        End If
    Next
    If sum = 0 Then
        dr("欠缺数量") = Nothing
    Else
        dr("欠缺数量") = sum
    End If
Next

--  作者:qctv
--  发布时间:2017/6/26 19:45:00
--  老师怎样解决正负数问题

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170626194140.jpg
图片点击可在新窗口打开查看我想把对应的正负数这两行删除

--  作者:qctv
--  发布时间:2017/6/26 19:46:00
--  
按键一键查找全表,并删除
--  作者:有点蓝
--  发布时间:2017/6/26 20:48:00
--  
参考:

DataTables("表A").LoadFilter = "第一列 in (Select 第一列*-1  from {表A} )"
DataTables("表A").Load

--  作者:qctv
--  发布时间:2017/6/26 23:13:00
--  
无效哟
--  作者:qctv
--  发布时间:2017/6/26 23:41:00
--  
好多这样的数据,怎样对冲删除呀
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170626233943.jpg
图片点击可在新窗口打开查看

--  作者:qctv
--  发布时间:2017/6/27 7:29:00
--  
我修改了下代码,为啥剩余数量会出现负数
For Each dr As DataRow In DataTables("出库统计表").Select("")
    Dim sum As Double = dr("实发数量")
    For Each cdr As DataRow In DataTables("入库材料表").Select("商品长代码 = \'" & dr("商品长代码") & "\' and 商品名称 = \'" & dr("商品名称") & "\'", "单据编号")
        Dim sysl As Double = cdr("HGQC2016B3001") + cdr("HGQC2016A9001") + cdr("HGQC2016A6001") + cdr("HGQC2016C1001") + cdr("HGQC2016C1002") + cdr("HGQC2016B1001") + cdr("HGQC2016BA001") + cdr("HGQC2017A7002") + cdr("HGQC2016B1005") + cdr("HGQC2017B1002") + cdr("HGQC2017B3001") + cdr("HGQC2017A9001") + cdr("HGQC2017B4001") + cdr("HGQC2017WH001") + cdr("HGQC2017B3003") + cdr("HGQC2017A13001") + cdr("HGQC2017B5001") + cdr("HGQC2017B3002") + cdr("HGQC2017B2001") + cdr("HGQC2017B1001") + cdr("HGQC2017A6001") + cdr("HGQC2017A7001") + cdr("HGQC2017A2001") + cdr("HGQC2017A5001") + cdr("HGQCA12001") + cdr("HGXQC12002") + cdr("HGQCA9001") + cdr("HGQCA7001") + cdr("L99") + cdr("HGQC2016B3002") + cdr("HGQC2016B4001") + cdr("HGQC2016C12001") + cdr("HGQC2016B1003") + cdr("HGQC2016B1002") + cdr("HGQC2017B1003") + cdr("HGQC2017B1009") + cdr("HGQC2016C2001") + cdr("HGQC2017ZX001") + cdr("HGQC2016WH001") + cdr("HGQCWH001") + cdr("HGQC2016WH002") + cdr("HGQC2016B1004") + cdr("HGQC2017B1004") + cdr("HGQCA2001") + cdr("HGXQB1002") + cdr("HGQCB1001") + cdr("HGQCA5001") + cdr("HGQCB3001") + cdr("HGQCC12001")



        If sum >= (cdr("实收数量")-sysl) Then
            \'cdr("剩余数量") = 0
            sum = sum - (cdr("实收数量")-sysl)
            cdr(dr("项目简码")) += cdr("实收数量")-sysl
        Else
            \'cdr("剩余数量") = cdr("实发数量")-sysl-sum
            cdr(dr("项目简码")) += sum
            sum = 0
            Exit For
        End If
    Next
    If sum = 0 Then
        dr("使用库存数量") = Nothing
    Else
        dr("使用库存数量") = sum
    End If
Next


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


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


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