Foxtable(狐表)用户栏目专家坐堂 → [求助]交叉统计


  共有5738人关注过本帖树形打印复制链接

主题:[求助]交叉统计

帅哥哟,离线,有人找我吗?
lesliecheung912
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
[求助]交叉统计  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/13 17:33:00 [只看该作者]

 统计列?

 

CrossTableBuilder包括以下属性: 

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/13 17:34:00 [只看该作者]

 其实你还可以用 sqlCrossTableBuilder

 

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

 


 回到顶部
帅哥哟,离线,有人找我吗?
lesliecheung912
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/6/13 17:37:00 [只看该作者]

定义交叉表时:Dim g As New CrossTableBuilder("政治面貌", DataTables("政治面貌"))
但是窗口中的表是查询表啊,那应该如何定义?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/6/13 18:05:00 [只看该作者]

将这个datasource放到定义的后面的话还是不行,会报 "未将对象引用设置到对象的实例" 的错误

 回到顶部
帅哥哟,离线,有人找我吗?
lesliecheung912
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/6/13 18:06:00 [只看该作者]

并且水平和垂直方向的自动汇总在窗口中的查询表中没有体现

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:452 积分:3015 威望:0 精华:0 注册:2014/4/23 17:12:00
  发帖心情 Post By:2014/6/13 18:14:00 [只看该作者]

Dim g As New CrossTableBuilder("政治面貌", DataTables("部门员工政治面貌"))
窗口名是:员工统计, 表名为Table1,那这个定义应该如何改啊?

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By: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


 回到顶部
总数 39 1 2 3 4 下一页