以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  跨表统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75192)

--  作者:kaituozhe
--  发布时间:2015/9/29 22:48:00
--  跨表统计

If e.DataCol.name = "产品名称"
    Dim drs As List (of DataRow) = DataTables("BOM清单").Select("产品名称= \'" & e.DataRow("产品名称") & "\'")
    For Each dr As DataRow In drs
        Dim dr1 As DataRow =DataTables("物料价格表").find("物料编号= \'" & dr("物料编号") & "\'")
        e.DataRow("材料成本")+= dr("数量")*dr1("单价")
    Next
End If

类似以上代码,一直有一个问题困惑我,上述代码每执行一次都会增加一倍,有没有什么方法可以解决此类问题。


--  作者:kaituozhe
--  发布时间:2015/9/29 22:52:00
--  
上述代码包含三个表,生产成本表、物料价格表、BOM清单,根据生产成本表中产品名称、在BOM清单中找到该产品所需要各种物料代码,然后根据物料编号在物料价格表找到相应材料的单价,根据所需每种材料的数量及单价求总和计算出材料成本。
--  作者:大红袍
--  发布时间:2015/9/29 22:55:00
--  

If e.DataCol.name = "产品名称"
    Dim drs As List (of DataRow) = DataTables("BOM清单").Select("产品名称= \'" & e.DataRow("产品名称") & "\'")

    e.DataRow("材料成本") = nothing
    For Each dr As DataRow In drs
        Dim dr1 As DataRow =DataTables("物料价格表").find("物料编号= \'" & dr("物料编号") & "\'")
        e.DataRow("材料成本")+= dr("数量")*dr1("单价")
    Next
End If