以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  明细不变动  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131161)

--  作者:有点蓝
--  发布时间:2019/2/19 9:51:00
--  
试试

Dim dic As new Dictionary(of String,Integer)
DataTables("出货信息_包装箱明细").DataRows.Clear()
For Each dr1 As DataRow In DataTables("出货信息_出货明细").DataRows
    For Each dr2 As DataRow In DataTables("BOM基础数据").SQLSelect("[成品编码] = \'" & dr1("成品编码") & "\' and 材料类型 = \'包装箱\'")
        Dim nm As String = dr1("销售订单号") & "|" & dr2("材料编码") & "|" & dr2("材料描述") & "|" & dr2("包装箱尺寸") & "|" & dr2("库位") & "|" & dr1("成品编码") 
        Dim vl As Integer = dr1("当日数量") * dr2("用量")
        If dic.ContainsKey(nm) = False
            dic.Add(nm,vl)
        Else
            dic(nm) = dic(nm)+ vl
        End If
    Next
Next
For Each key As String In dic.keys
    Dim keys() As String = key.split("|")
    Dim dr As DataRow = DataTables("出货信息_包装箱明细").AddNew()
    Dim cr As DataRow = Tables("出货信息_出货明细").DataTable.Find("[成品编码] = \'" & keys(5) & "\'")
    dr("材料编码") = keys(1)
    dr("材料描述") = keys(2)
    dr("包装箱尺寸") = keys(3)
    dr("库位") = keys(4)
    dr("销售订单号") = keys(0)
    dr("需求数量") = dic(key)
    dr("成品编码") = keys(5)
    dr("成品描述") = cr("成品描述")
    dr("下达日期") = cr("下单日期")
    dr("业务员") = cr("业务员")
Next