以文本方式查看主题

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

--  作者:lesliecheung912
--  发布时间:2014/6/13 17:31:00
--  [求助]交叉统计
如果要在窗口中的查询表(SQLquery)中做交叉统计,代码应该如何写,直接生成查询表的代码为:
Dim q As new QueryBuilder
q.C
q.TableName = ("政治面貌")
q.Selectstring ="select * from (Select  工作部门,政治面貌,count(员工编号) 人数 from 员工档案表 group by 工作部门,政治面貌)b order by 人数 desc"
q.Build
Dim g As New CrossTableBuilder("政治面貌", DataTables("部门员工政治面貌"))
g.HGroups.AddDef("工作部门")
g.VGroups.AddDef("政治面貌")
g.Totals.AddDef("人数", "人数")
g.Build()
MainTable = Tables("政治面貌") 
MainTable.Font = New Font("宋体",10,FontStyle.Regular)
Tables("政治面貌").AutoSizeCols()

另外,这个查询表出来以后没有统计列,统计列的代码又改如何写?
[此贴子已经被作者于2014-6-13 17:31:49编辑过]

--  作者:有点甜
--  发布时间:2014/6/13 17:33:00
--  

 统计列?

 

CrossTableBuilder包括以下属性: 

Caption:        字符型,指定新生成统计表的标题。
HGroups:         集合,用于添加水平分组列。
VGroups:         集合,用于添加垂直分组列。
Totals:          集合,用于添加统计列。
OrderByTotal:   逻辑型,在有多个统计列时,是否将同一个统计列的数据排放在一起。
HorizontalTotal: 逻辑型,水平方向是否自动汇总。
VerticalTotal:  逻辑型,垂直方向是否自动汇总。

Subtotal:        逻辑型,设为True,将对交叉统计结果进行二次统计,生成汇总模式。
SubtotalLevel:   整数型,根据多少个分组生成汇总模式。
Decimals:       整数型,用于设置统计结果要保留的小数位数。
Filter:         字符型,如果只是对SourceDataTable中的部分数据进行统计,可用Filter属性设置条件。 


--  作者:有点甜
--  发布时间:2014/6/13 17:34:00
--  

 其实你还可以用 sqlCrossTableBuilder

 

http://www.foxtable.com/help/topics/1627.htm

 


--  作者:lesliecheung912
--  发布时间:2014/6/13 17:37:00
--  
定义交叉表时:Dim g As New CrossTableBuilder("政治面貌", DataTables("政治面貌"))
但是窗口中的表是查询表啊,那应该如何定义?

--  作者:有点甜
--  发布时间:2014/6/13 17:40:00
--  
以下是引用lesliecheung912在2014-6-13 17:37:00的发言:
定义交叉表时:Dim g As New CrossTableBuilder("政治面貌", DataTables("政治面貌"))
但是窗口中的表是查询表啊,那应该如何定义?

 

Tables("窗口1_Table1").DataSource = g.BuildDataSource


--  作者:lesliecheung912
--  发布时间:2014/6/13 18:05:00
--  
将这个datasource放到定义的后面的话还是不行,会报 "未将对象引用设置到对象的实例" 的错误
--  作者:lesliecheung912
--  发布时间:2014/6/13 18:06:00
--  
并且水平和垂直方向的自动汇总在窗口中的查询表中没有体现
--  作者:有点甜
--  发布时间:2014/6/13 18:07:00
--  
以下是引用lesliecheung912在2014-6-13 18:05:00的发言:
将这个datasource放到定义的后面的话还是不行,会报 "未将对象引用设置到对象的实例" 的错误

 

窗口名、表名你都没有改一下么?

 

Dim g As New CrossTableBuilder("政治面貌", DataTables("部门员工政治面貌"))
g.HGroups.AddDef("工作部门")
g.VGroups.AddDef("政治面貌")
g.Totals.AddDef("人数", "人数")

Tables("窗口1_Table1").DataSource = g.BuildDataSource


--  作者:lesliecheung912
--  发布时间:2014/6/13 18:14:00
--  
Dim g As New CrossTableBuilder("政治面貌", DataTables("部门员工政治面貌"))
窗口名是:员工统计, 表名为Table1,那这个定义应该如何改啊?

--  作者:Bin
--  发布时间:2014/6/14 9:00:00
--  
Dim g As New CrossTableBuilder("政治面貌", DataTables("部门员工政治面貌"))
g.HGroups.AddDef("工作部门")
g.VGroups.AddDef("政治面貌")
g.Totals.AddDef("人数", "人数")

Tables("员工统计_Table1").DataSource = g.BuildDataSource