Foxtable(狐表)用户栏目专家坐堂 → 组合多个统计结果


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

主题:组合多个统计结果

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


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

以下是引用狐狸爸爸在2011-6-7 22:47:00的发言:

刚刚改进,下次更新可以用了:

 

 

Dim bd1 As New GroupTableBuilder("统计表1",DataTables("进货单"))

Dim dt1 As fxDataSource

bd1.Groups.AddDef("品名") '根据品名分组

bd1.Groups.AddDef("型号") '根据型号分组

bd1.Totals.AddDef("数量","进货_数量") '对数量进行统计

bd1.Totals.AddDef("金额","进货_金额") '对金额进行统计

dt1 = bd1.BuildDataSource()

 

Dim bd2 As New GroupTableBuilder("统计表2",DataTables("销售单"))

Dim dt2  As fxDataSource

bd2.Groups.AddDef("品名") '根据品名分组

bd2.Groups.AddDef("型号") '根据型号分组

bd2.Totals.AddDef("数量","销售_数量") '对数量进行统计

bd2.Totals.AddDef("金额","销售_金额") '对金额进行统计

dt2 = bd2.BuildDataSource()

 

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("退货单"))

Dim dt3 As fxDataSource

bd3.Groups.AddDef("品名") '根据品名分组

bd3.Groups.AddDef("型号") '根据型号分组

bd3.Totals.AddDef("数量","退货_数量") '对数量进行统计

bd3.Totals.AddDef("金额","退货_金额") '对金额进行统计

dt3 = bd3.BuildDataSource()

 

Dim nms As String() = {"品名","型号"} '指定连接列

dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据

dt1.Combine(nms,dt3,nms) '将退货统计数据组合到进货统计数据

Tables("窗口1_Table1").DataSource = dt1 '将统计结果绑定到Table

With DataTables("窗口1_Table1").DataCols  '用表达式列计算库存数据

    .Add("库存_数量",Gettype(Integer), "IsNull([进货_数量],0) - ISNULL([销售_数量],0) - ISNULL([退货_数量],0)")

    .Add("库存_金额",Gettype(Double), "[库存_数量] /[进货_数量] * [进货_金额]")

End With

这个一定要顶,非常牛!GroupTableBuilder和CrossTableBuilder可以对临时的DataTable进行统计,而这些临时的datatable是可以用sql语句直接生成的,这就意味着统计的对象不仅可以是库中的现成表,也可以是查询表;再加上这个组合功能,就更强大了!

如果纯粹用sql语句来写,多个join肯定会搞到头昏。。


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


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

不过,对于类似于这样的统计表,好像还是只能用sql语句实现:


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

针对现有的统计工具,能否考虑再完善以下功能:

1、关于同比和环比。

目前分组统计工具可以实现,但必须要按照年/月(季周等)分组。这样生成的统计结果往往并不是我们所真正需要的。比如,我仅想得到2011年5月份的同比和环比数据,统计范围就必须包含2010年5月份和2011年4月份的原始数据,这样分组统计的结果中就同时有了其它2个月的数据(这2个月的数据并不是我们想要的)。同时,统计表中还有了两个不想看到的列:年、月。

2、增加累计。这个和“截至”不同,一般是从年初到当前的累计。


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


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

以下是引用狐狸爸爸在2011-6-9 8:04:00的发言:

 

下次更新,你将看到一个新的工具:组合表生成器(JoinTableBuilder),彻底摆脱SQL的Join烦恼

 

热切期待!


 回到顶部