Foxtable(狐表)用户栏目专家坐堂 → 关于专业统计工具的问题


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

主题:关于专业统计工具的问题

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
关于专业统计工具的问题  发帖心情 Post By:2011/6/20 17:33:00 [显示全部帖子]

分组列和统计列,只要是表达式,统计完成后都跑到后面去了:


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

代码是这样的(用的组合统计结果中的示例数据):

Dim b As New SQLGroupTableBuilder("统计表1","进货单")
b.Groups.AddExp("大类","Iif(InStr(型号,'X')>0,'X系列','其它系列')")    '
b.Groups.AddDef("型号")
b.Totals.AddExp("金额","数量 * 单价")
b.Totals.AddDef("数量")
Tables("窗口3_Table1").DataSource  = b.BuildDataSource

比如用表达式生成的“大类”列,肯定是放在“型号”列前面才是正确的。


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2011/6/20 17:49:00 [显示全部帖子]

以下是引用ybil在2011-6-20 17:42:00的发言:
目前这样:
Dim b As New SQLGroupTableBuilder("统计表1","进货单")
b.Groups.AddExp("大类","Iif(InStr(型号,'X')>0,'X系列','其它系列')")    '
b.Groups.AddEXP("型号","型号")
b.Totals.AddExp("金额","数量 * 单价")
b.Totals.AddEXP("数量","数量")
Tables("窗口3_Table1").DataSource  = b.BuildDataSource

哈哈,还不如干脆取消AddDef算了,省的看帮助头晕


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2011/6/20 18:15:00 [显示全部帖子]

问题很严重,还是用“组合统计结果”中的示例数据,运行以下代码:

 

Dim b As New SQLGroupTableBuilder("统计表1","进货单")
b.AddTable("进货单","型号","销售单","型号") '添加统计表
b.Groups.AddExp("大类","Iif(InStr({进货单}.型号,'X')>0,'X系列','其它系列')")
b.Groups.AddExp("型号","{进货单}.型号")
b.Totals.AddExp("金额","{进货单}.数量 * {进货单}.单价","进货金额_值")
b.Totals.AddExp("数量1","{进货单}.数量","进货数量_值")
b.Totals.AddExp("数量2","{销售单}.数量","销售数量_值")
'b.GroupProportion = True
'b.GrandProportion = True
'b.VerticalTotal = True
Tables("窗口3_Table1").DataSource  = b.BuildDataSource

 

不但存在ybil版主所说的仅是内部关联的问题,就连统计结果也是错误的!(如果把AddTable去掉,统计结果正常)


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2011/6/20 18:40:00 [显示全部帖子]

以下是引用狐狸爸爸在2011-6-20 18:23:00的发言:
SQLGroupTableBuilder要求一对多的关系,这种多对多是不可以的。

我终于明白统计数据是怎么翻倍的了。NB-XG1正常的统计数量是120,由于它在“销售单”有3条对应记录,所以变成660了。

这个应该改进,否则AddTable就意义不大了。

另外,试了下b.Subtotal = True无效


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2011/6/20 19:30:00 [显示全部帖子]

嗯,刚试了下一对多,统计结果是OK的。帮助这部分的说明有问题,在SQLGroubpTableBuilder和SQLCrossTableBuilder的说明中根本没有强调一对多,只在“组合多个统计结果”中有一句话。如果用户是顺着看帮助,在用到SQLGroubpTableBuilder时说不准也有同样的疑问。

Subtotal属性设置后确实无效,请大家再试一下。


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2011/6/21 8:22:00 [显示全部帖子]

以下是引用狐狸爸爸在2011-6-21 8:15:00的发言:
subtotal我测试有效啊,记住必须是Build方法才行,BuildDatasource是不行的,理由大家想一下。

明白了。AddTable和AddExp的问题辛苦再改一下,等用呢。多谢了!


 回到顶部