Foxtable(狐表)用户栏目专家坐堂 → 分组统计的问题


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

主题:分组统计的问题

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


加好友 发短信
等级:婴狐 帖子:20 积分:239 威望:0 精华:0 注册:2012/4/4 20:37:00
分组统计的问题  发帖心情 Post By:2012/4/23 21:55:00 [只看该作者]

烦请问:

分组统计生成的的临时表中,能否通过手工编码,增加一个表达式列并直接出结果?

 

例如:

 

'定义一个GroupTableBuilder,名称为"统计表1",对订单表进行统计。
Dim
b As New GroupTableBuilder("统计表1",DataTables("订单"))

 


b.Filter = "[客户] = 'CS01'" '仅统计客户为CS01的记录

b.Groups.AddDef("产品") '根据产品分组

b.Totals.AddDef("数量") '对数量进行统计

 

(这里代码如何写:要得到一个"金额"列,是“数量列*单价列”而计算出来的)


b.Build '生成统计表

MainTable = Tables("统计表1") '打开生成的统计表

 


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/4/23 22:24:00 [只看该作者]

表达式列与后台统计

假定订单表中的金额列是个表达式列,其表达式为:数量 * 单价

如果需要统计不同的产品销售数量和金额,通常可以这样编码:

Dim g As New GroupTableBuilder("统计表1", DataTables("订单"))
g.Groups.AddDef(
"产品")
g.Totals.AddDef(
"数量")
g.Totals.AddDef(
"金额")
g.Build()

MainTable
= Tables("统计表1")

上述统计是针对已经加载的数据,如果需要统计后台数据,很多人会以为将FromServer属性设置为True即可:

Dim g As New GroupTableBuilder("统计表1", DataTables("订单"))
g.FromServer =
True
g.Groups.AddDef(
"产品")
g.Totals.AddDef(
"数量")
g.Totals.AddDef(
"金额")
g.Build()

MainTable
= Tables("统计表1"
)

实际上,当我们在命令窗口执行上面的代码时,会出现错误提示,无法完成统计。
这是因为金额是一个表达式列,只存在于Foxtable中,后台并不存在金额这一列。

显然,此类统计无法直接用
GroupTableBuilder完成,只能使用SQLGroupTableBuilder,代码为:

Dim b As New SQLGroupTableBuilder("统计表1","订单")
b.Groups.AddDef(
"产品")
b.Totals.AddDef(
"数量")
b.Totals.AddExp(
"金额","数量 * 单价")
b.Build

MainTable
= Tables("统计表1"
)

选择后台统计工具的原则是:

1、如果统计数据来自于一个表,且不需要统计表达式列,那么应该采用GroupTableBuilder或CrossTableBuilder。
2、如果统计数据来自于多个表,或者需要统计表达式列,
那么只能采用SQLGroupTableBuilder或SQLCrossTableBuilder。


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


加好友 发短信
等级:婴狐 帖子:20 积分:239 威望:0 精华:0 注册:2012/4/4 20:37:00
回复:(zenqee)分组统计的问题  发帖心情 Post By:2012/4/24 21:54:00 [只看该作者]

请问程老师:

 

前面的问题中表达式列是    金额=数量 * 单价 ,

分组统计时用    b.Totals.AddExp("金额","数量 * 单价 )
那么,  统计的这列金额是采用下列哪种算法得出的?

 

1、金额 = 数量1*单价1 + 数量2*单价2

2、金额 = (数量1+数量2)* (单价1+单价2) 

 

 

如果是第一种,那我要统计第二种结果(我只是举例,事实上不会这么算),也就是要先分组统计数量和单价的和再相乘,该如何编码?

 

谢谢!


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/4/24 22:01:00 [只看该作者]

数量1*单价1 + 数量2*单价2

 

如果要第二种,分别统计出数量和单价的累计值,然后用代码给统计表增加一个表达式列,表达式为: 数量 * 单价

[此贴子已经被作者于2012-4-24 22:02:41编辑过]

 回到顶部