以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于专业统计工具的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=10730)

--  作者:reachtone
--  发布时间: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

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


--  作者:狐狸爸爸
--  发布时间:2011/6/20 17:37:00
--  
收到
--  作者:ybil
--  发布时间:2011/6/20 17:38: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

--  作者:狐狸爸爸
--  发布时间:2011/6/20 17:46:00
--  

你真够狡猾的。图片点击可在新窗口打开查看

 

 


--  作者:reachtone
--  发布时间: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算了,省的看帮助头晕


--  作者:ybil
--  发布时间:2011/6/20 17:51:00
--  
以下是引用狐狸爸爸在2011-6-20 17:46:00的发言:

你真够狡猾的。图片点击可在新窗口打开查看

 

呵呵,活人不能让屎尿敝死!

--  作者:ybil
--  发布时间:2011/6/20 18:08:00
--  
以下是引用reachtone在2011-6-20 17:49:00的发言:

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

非常有道理:如AddDef与AddExp效率一样,不如就R版所言:

取消AddDef

但最好能这样:
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

[此贴子已经被作者于2011-6-20 18:08:37编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/6/20 18:11:00
--  
不能取消的,因为要保持和以前的代码兼容。
--  作者:reachtone
--  发布时间: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去掉,统计结果正常)