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


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

主题:[求助]交叉统计问题

美女呀,离线,留言给我吧!
cherryjing
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
[求助]交叉统计问题  发帖心情 Post By:2022/12/4 21:54:00 [只看该作者]

原本用CrossTableBuilder代码如下:
Dim g As New CrossTableBuilder("交叉统计表1", DataTables("设备材料表"))
If rdoUnit1.Checked Then
    g.HGroups.AddDef("主项编号")
    g.VGroups.AddDef("专业", "{0}_金额")
Else
    g.HGroups.AddDef("专业")
    g.VGroups.AddDef("主项编号", "{0}_金额")
End If

g.Totals.AddDef("金额", "金额")
g.HorizontalTotal = True
g.VerticalTotal = True
g.HorizontalProportion = True
g.Build()
Tables("Form_Stastistics_tbl_Stastistics").DataSource = g.BuildDataSource()

运行正常,但我为了将主项编号变为主项名称,修改代码如下:

Dim b As New SQLCrossTableBuilder("交叉统计表1", "设备材料表") 
'b.C
b.AddTable("设备材料表", "主项编号", "主项表", "主项编号") '添加统计表
If rdoUnit1.Checked Then
    b.HGroups.AddDef("主项名称") '添加主项名称列用于水平分组
    b.VGroups.AddDef("专业", "{0}_金额") '添加专业列用于垂直分组,并设置了Pattern参数
Else
    b.HGroups.AddDef("专业") '添加专业列用于水平分组
    b.VGroups.AddDef("主项名称", "{0}_金额") '添加主项名称列用于垂直分组,并设置了Pattern参数
End If

b.Totals.AddDef("金额", "金额") '添加数量列用于统计
b.HorizontalTotal = True
b.VerticalTotal = True
b.HorizontalProportion = True
b.Build '生成统计表
Tables("Form_Stastistics_tbl_Stastistics").DataSource = b.BuildDataSource()

运行错误:
统计错误,错误原因:在查询定义的SELECT列表中,别名‘金额’循环引用

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/4 22:00:00 [只看该作者]


 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2022/12/4 22:04:00 [只看该作者]

金额列为表达式列,表达式为[单价]*[数量]


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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/4 22:11:00 [只看该作者]

表达式列使用AddExp


b.Totals.AddExp("金额", "[单价]*[数量]")

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2022/12/4 22:20:00 [只看该作者]

修改代码如下:
Dim b As New SQLCrossTableBuilder("交叉统计表1", "设备材料表") 
'b.C
b.AddTable("设备材料表", "主项编号", "主项表", "主项编号") '添加统计表
If rdoUnit1.Checked Then
    b.HGroups.AddDef("{主项表}.主项名称") '添加客户列用于水平分组
    b.VGroups.AddDef("{设备材料表}.专业", "{0}_{设备材料表}.金额") '添加产品列用于垂直分组,并设置了Pattern参数
Else
    b.HGroups.AddDef("{设备材料表}.专业") '添加客户列用于水平分组
    b.VGroups.AddDef("{主项表}.主项名称", "{0}_{设备材料表}.金额") '添加产品列用于垂直分组,并设置了Pattern参数
End If
Output.Show ("chart 2: CrossTableBuilder")
b.Totals.AddDef("{设备材料表}.金额") '添加数量列用于统计
b.HorizontalTotal = True
b.VerticalTotal = True
b.HorizontalProportion = True
b.Build '生成统计表

这次错误变成了:至少一个参数没有被指定值

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/4 22:44:00 [只看该作者]

b.VGroups.AddDef("{设备材料表}.专业", "{0}_金额") 
b.VGroups.AddDef("{主项表}.主项名称", "{0}_金额")

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2022/12/5 16:25:00 [只看该作者]

问题解决,就是表达式列的问题。接着有个新问题,就是如何把主项名称和主项编号同时显示出来,形如:
主项名称(主项编号)
[此贴子已经被作者于2022/12/5 16:39:43编辑过]

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/5 16:41:00 [只看该作者]

2个列都添加到分组里即可

 回到顶部