以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  数据汇总  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=127371)

--  作者:有点甜
--  发布时间:2018/11/12 18:03:00
--  

加入msgbox测试是否弹出,你要学会自己调试代码啊。

 

Dim dic As new Dictionary(of String,Integer)
DataTables("BOM分析表_需求明细").DataRows.Clear()
For Each dr1 As DataRow In DataTables("生产在制品").DataRows
   
    msgbox(1)
    For Each dr2 As DataRow In DataTables("BOM基础数据").Select("[成品编码] = \'" & dr1("成品编码") & "\'")
       
        msgbox(2)
        Dim nm As String = dr1("生产批次") & "|" & dr2("材料编码")
        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
msgbox(dic.Count)
For Each key As String In dic.keys
    msgbox("a")
    Dim dr As DataRow = DataTables("BOM分析表_需求明细").AddNew()
    Dim cr As Row = Tables("生产在制品").Current
    dr("材料编码") = key.split("|")(1)
    dr("需求数量") = dic(key)
    dr("生产批次") = key.split("|")(0)
    dr("毛坯产地") = cr("毛坯产地")
    dr("下达日期") = cr("下达日期")
Next


--  作者:有点蓝
--  发布时间:2018/11/12 20:09:00
--  
说明DataTables("生产在制品")没有数据
--  作者:有点蓝
--  发布时间:2018/11/12 20:27:00
--  
那要先加载需要计算的数据啊,都没有数据,这段代码肯定没有任何用处
--  作者:有点蓝
--  发布时间:2018/11/12 20:54:00
--  
代码需要实现什么功能?
--  作者:有点蓝
--  发布时间:2018/11/12 21:06:00
--  
你把"生产在制品"需要计算的数据加载出来不就行了
--  作者:有点蓝
--  发布时间:2018/11/12 21:41:00
--  
计算是针对整个表所有数据?那么加载全部数据计算,和从后台取所有数据都没有区别的。

如果这样说明您的业务逻辑本身就是错误的,不可能需要计算整个表的数据。那么根据什么条件加载什么数据进行计算,自己先考虑清楚

--  作者:有点蓝
--  发布时间:2018/11/12 21:54:00
--  
那就加载制品表中的订单状态为“进行中”数据啊
--  作者:有点蓝
--  发布时间:2018/11/12 22:22:00
--  
Dim dic As new Dictionary(of String,Integer)
DataTables("BOM分析表_需求明细").DataRows.Clear()
For Each dr1 As DataRow In DataTables("生产在制品").sqlselect("订单状态=\'进行中\'")
    For Each dr2 As DataRow In DataTables("BOM基础数据").Select("[成品编码] = \'" & dr1("成品编码") & "\'")
        Dim nm As String = dr1("生产批次") & "|" & dr2("材料编码")
……

--  作者:有点甜
--  发布时间:2018/11/13 14:51:00
--  

比如

 

Dim dic As new Dictionary(of String,Integer)
DataTables("生产计划下达_BOM分析表").DataRows.Clear()
For Each dr1 As DataRow In DataTables("生产计划下达_生产在制").DataRows
    For Each dr2 As DataRow In DataTables("BOM基础数据").SQLSelect("[成品编码] = \'" & dr1("成品编码") & "\'")
        Dim nm As String = dr1("生产批次") & "|" & dr2("材料编码") & "|" & dr2("材料描述")
        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 dr As DataRow = DataTables("生产计划下达_BOM分析表").AddNew()
    Dim cr As Row = Tables("生产计划下达_生产在制").Current
    dr("材料编码") = key.split("|")(1)
    dr("材料描述") = key.split("|")(2)
    dr("生产批次") = key.split("|")(0)
    dr("需求数量") = dic(key)
    dr("毛坯产地") = cr("毛坯产地")
    dr("成品编码") = cr("成品编码")
    dr("成品描述") = cr("成品描述")
    dr("下达日期") = cr("下达日期")
Next