以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  用料计算  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=174227)

--  作者:实话实说
--  发布时间:2022/1/6 11:43:00
--  用料计算

有2个表:数量表和用料表。想在数量表中中先对数量按产品代码进行汇总后再计算用料(红色代码)为什么不行?

 

If e.DataCol.Name = "数量" Then

Dim b As New CrossTableBuilder("数量汇总",DataTables("产品数量"))
b.HGroups.AddDef("产品代码") \'添加列水平分组
b.Totals.AddDef("数量")
\'b.Build \'生成统计表

    Dim Filter As String = "[产品代码] = \'" & e.DataRow("产品代码") & "\'"
    Dim dts As List(Of DataRow) = DataTables("BOM").Select(Filter)
    For Each dt As DataRow In dts
        If dt IsNot Nothing Then
            \'dt("计算用料") = dt("千米用料") * e.DataRow("数量")
            dt("计算用料") = dt("千米用料") * b.DataRow("数量")
        Else
            dt("计算用料") = 0
        End If
    Next
End If


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

--  作者:有点蓝
--  发布时间:2022/1/6 11:47:00
--  
没有添加垂直分组。如果不需要垂直分组,请使用分组统计,不要使用交叉统计
--  作者:实话实说
--  发布时间:2022/1/6 12:32:00
--  

这段代码有问题

dt("计算用料") = dt("千米用料") * b.DataRow("数量")


--  作者:有点蓝
--  发布时间:2022/1/6 13:42:00
--  
这个代码想要干嘛?
--  作者:实话实说
--  发布时间:2022/1/6 13:43:00
--  

If e.DataCol.Name = "数量" Then

Dim b As New GroupTableBuilder("数量汇总",DataTables("产品数量"))
b.Groups.AddDef("产品代码")
b.Totals.AddDef("数量")
b.Build \'生成统计表

    Dim Filter As String = "[产品代码] = \'" & e.DataRow("产品代码") & "\'"
    Dim dts As List(Of DataRow) = DataTables("BOM").Select(Filter)
    For Each dt As DataRow In dts
        If dt IsNot Nothing Then
            \'dt("计算用料") = dt("千米用料") * e.DataRow("数量")
            dt("计算用料") = dt("千米用料") * b.DataRow("数量")
        Else
            dt("计算用料") = 0
        End If
    Next
End If



图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2022/1/6 13:44:37编辑过]

--  作者:实话实说
--  发布时间:2022/1/6 13:46:00
--  
再产品数量表中,可能有重复的产品,先汇总产品数量再计算
--  作者:有点蓝
--  发布时间:2022/1/6 13:46:00
--  
交叉统计没有DataRow这种属性,这个代码想要干嘛?
--  作者:实话实说
--  发布时间:2022/1/6 14:00:00
--  

那如何引用数量汇总表的数量汇总数据?

我改用的是分组统计,5楼代码

[此贴子已经被作者于2022/1/6 14:00:53编辑过]

--  作者:有点蓝
--  发布时间:2022/1/6 14:06:00
--  
数量汇总表如果有好多行,要取哪一行数据?
--  作者:实话实说
--  发布时间:2022/1/6 14:51:00
--  

用料表:计算用料 = 千米用料 * 数量 (按产品代码计算)

其中:数量是产品数量表中的字段,需要按产品代码汇总后再用于上述公式,