以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何在分组、交叉统计中,统计某一产品不重复的雇员数量  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=166118)

--  作者:onlinech
--  发布时间:2021/5/19 14:45:00
--  如何在分组、交叉统计中,统计某一产品不重复的雇员数量
想对订单表中的产品进行分组或交叉统计时,对雇员进行不重复的统计,好某一产品有几个雇员进行了下单
Dim g As New GroupTableBuilder("统计表1", DataTables("订单"))
g.Groups.AddDef("产品")
g.Totals.AddDef("数量")
g.Totals.AddDef("金额")
g.Totals.AddDef("雇员", AggregateEnum.Count)
g.Build()
MainTable = Tables("统计表1")
我的代码只能统计记录数,能否给下代码
[此贴子已经被作者于2021/5/19 14:46:27编辑过]

--  作者:有点蓝
--  发布时间:2021/5/20 8:29:00
--  
Dim g As New GroupTableBuilder("统计表1", DataTables("订单"))
g.Groups.AddDef("产品")
g.Totals.AddDef("数量")
g.Totals.AddDef("金额")
g.Build()
MainTable = Tables("统计表1")
DataTables("统计表1").DataCols.Add("雇员",Gettype(Integer))
For Each r As Row In Tables("统计表1").Rows
    r("雇员") = DataTables("订单").GetValues("雇员","产品=\'" & r("产品") & "\'").count
Next

--  作者:onlinech
--  发布时间:2021/5/20 11:00:00
--  
在交叉统计中,我的代码如下,但是报错。
Dim g As New CrossTableBuilder("统计表1", DataTables("订单"))
g.HGroups.AddDef("产品")
g.VGroups.AddDef("客户", "客户_{0}")
g.Totals.AddDef("数量", "数量")
g.Build()
MainTable = Tables("统计表1")
DataTables("统计表1").DataCols.Add("客户_雇员数量",Gettype(Integer))
For Each r As Row In Tables("统计表1").Rows
    r("客户_雇员数量") = DataTables("订单").GetValues("雇员","产品=\'" & r("产品") & "\'" And "客户=\'" & r("客户") & "\'").count
Next


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

我想要的效果如下

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

能帮我看下哪里错了吗?

[此贴子已经被作者于2021/5/20 11:05:40编辑过]

--  作者:有点蓝
--  发布时间:2021/5/20 11:25:00
--  
打开统计表表结构看看就知道了,界面显示的是标题,不是列名,列名不正确:http://www.foxtable.com/webhelp/topics/0193.htm

Dim g As New CrossTableBuilder("统计表1", DataTables("订单"))
g.HGroups.AddDef("产品")
g.VGroups.AddDef("客户", "客户_{0}")
g.Totals.AddDef("数量", "数量")
g.Totals.AddDef("雇员",AggregateEnum.Count, "雇员")
g.Build()
MainTable = Tables("统计表1")
Dim dict As new Dictionary(of String, String)
For Each c As Col In Tables("统计表1").Cols
    If c.Caption Like "*雇员" Then
        dict.Add(c.Name,c.Caption.Split("_")(1))
    End If
Next

For Each r As Row In Tables("统计表1").Rows
    For Each key As String In dict.Keys
        r(key) = DataTables("订单").GetValues("雇员","产品=\'" & r("产品") & "\' And 客户=\'" & dict(key) & "\'").count
    Next
Next