以文本方式查看主题

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

--  作者:实话实说
--  发布时间:2009/10/10 18:35:00
--  交叉统计
狐表字带的[统计演示]实例中代码


Dim
b As New CrossTableBuilder("统计表1",DataTables("订单"))

b.HGroups.AddDef("客户") \'添加客户列用于水平分组

b.VGroups.AddDef("日期","{0}月") \'添加日期列用于垂直分组

b.Totals.AddDef("数量") \'添加数量列用于统计
b.OrderByTotal = True
\'同中类型的统计数据排列在一起

b.Build \'生成统计表
Maintable = Tables("统计表1") \'打开生成的统计表 


我想增加[合计]字段,对月份进行横向统计,请帮我补充代码。谢了

--  作者:yangming
--  发布时间:2009/10/10 18:58:00
--  

下段代码放到你上面代码倒数第二行便可,其实就是汇总模式的代码

Dim t As Table = Tables("统计表1")
Dim g1 As SubtotalGroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False

g1 = New SubtotalGroup
g1.Aggregate = AggregateEnum.Sum
g1.GroupOn = "*"
g1.TotalOn = "1月,2月,3月,4月,...." \'以此类推
g1.Caption = "合计"
t.SubtotalGroups.Add(g1)
t.Subtotal()

为了方便,你也可以先生成统计表1,然后再做汇总模式,查看代码,将汇总代码复制下来便可以了

[此贴子已经被作者于2009-10-10 19:01:45编辑过]

--  作者:czy
--  发布时间:2009/10/10 19:43:00
--  
这样?

Dim g As New CrossTableBuilder("统计表2", DataTables("订单"))
g.HGroups.AddDef("客户")
g.VGroups.AddDef("日期", "{0}月")
g.Totals.AddDef("数量", "数量")
g.OrderByTotal = True
g.HorizontalTotal = True
g.Build()
MainTable = Tables("统计表2")

--  作者:实话实说
--  发布时间:2009/10/10 20:58:00
--  
CZY满足我的要求,只是要生成两个表,能否只有一个表呢?
--  作者:czy
--  发布时间:2009/10/10 21:02:00
--  
没明白你的意思。

是不是只要一个统计表?
你将我代码中的“统计表2”改成“统计表1”看看。
--  作者:程兴刚
--  发布时间:2009/10/10 21:05:00
--  
呵呵,统计表1是他自己原来的!图片点击可在新窗口打开查看
--  作者:实话实说
--  发布时间:2009/10/10 21:10:00
--  
我笨,谢谢CZY
--  作者:实话实说
--  发布时间:2009/10/10 21:40:00
--  

还有,上述交叉统计需要每次通过按钮才能适时更新,能否自动适时更新呢?


--  作者:yangming
--  发布时间:2009/10/11 12:09:00
--  

此统计表本身就是临时表,如何适时自动?除非你做一个固定的表


--  作者:实话实说
--  发布时间:2009/10/11 18:40:00
--  
请教CZY,3楼代码中统计表1的“合计”字段是怎么来的?