以文本方式查看主题

-  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=169708)

--  作者:mybx
--  发布时间:2021/6/27 14:08:00
--  分组汇总时能否除显示分组列和汇总列外,也能同时显示其他不分组的列
我要对下面这个物耗总表进行分组汇总,分组列是代号和规格(用代号和规格两项才能确定这个物料),要汇总的列为最后面的“小合计”,见下图


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

我设置的分组汇总设置如下图:


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

生成的汇总表只有三列,代号、规格和 总合计


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


我的问题是,只显示三列太少了,想再多显示几列,如名称、工序、类别、备注等,但这些列是不参与分组汇总的。如果设置不能解决,是不是有其他代码可以?

--  作者:有点蓝
--  发布时间:2021/6/27 21:47:00
--  
分组后添加一些临时列,比如:

Dim b As New GroupTableBuilder("统计表1",DataTables("物耗总表"))
b.Groups.AddDef(
"代号"
b.
Groups.AddDef("规格"
b.Totals.AddDef("小合计")
b.Build 
\'生成统计表
dataTables("统计表1").DataCols.Add("名称", GetType(string), 16)
dim dr as datarow
for each r as row in Tables("统计表1").rows
dr = ataTables("物耗总表").find("代号=\'" & r("代号") & "\' and 规格=\'" & r("规格") & "\'")
r("名称") = dr("名称")
next

--  作者:mybx
--  发布时间:2021/6/30 11:23:00
--  
感谢大佬!非常感谢!!
--  作者:mybx
--  发布时间:2021/6/30 11:49:00
--  
还是没调出来

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:技术物耗表模拟.table


用的这些代码

Dim g As New GroupTableBuilder("汇总物耗表", DataTables("物耗总表"))
g.Groups.AddDef("代号")
g.Groups.AddDef("规格")
g.Totals.AddDef("小合计", "总合计")
g.Build()   \'生成统计表

DataTables("汇总物耗表").DataCols.Add("名称", Gettype(String), 16)
Dim dr As DataRow
For Each r As Row In Tables("汇总物耗表").rows
dr = DataTables("物耗总表").find("代号=\'" & r("代号") & " \' and 规格=\'" & r("规格") & " \'")
r("名称") = dr("名称")
Next

MainTable = Tables("汇总物耗表")

只是第一行显示 出来了,并且代码也报错了


--  作者:有点蓝
--  发布时间:2021/6/30 12:01:00
--  
那是因为数据规格有空值,或者空字符串,数据不一致导致的问题

DataTables("汇总物耗表").DataCols.Add("名称", Gettype(String), 16)
Dim dr As DataRow
For Each r As Row In Tables("汇总物耗表").rows
    If r.IsNull("规格") OrElse r("规格") = ""
        dr = DataTables("物耗总表").find("代号=\'" & r("代号") & "\' and (规格 is null or 规格=\'\')")
    Else
        dr = DataTables("物耗总表").find("代号=\'" & r("代号") & "\' and 规格=\'" & r("规格") & "\'")
    End If
    If dr IsNot Nothing Then
        r("名称") = dr("名称")
    End If
Next

--  作者:mybx
--  发布时间:2021/6/30 12:07:00
--  
成功了,非常感谢,确实是空行的问题,不好意思,不太懂,谢谢!非常完美!