Foxtable(狐表)用户栏目专家坐堂 → [求助]组合多个统计结果,问,要按日期的月份统计,应该怎么写?


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

主题:[求助]组合多个统计结果,问,要按日期的月份统计,应该怎么写?

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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
[求助]组合多个统计结果,问,要按日期的月份统计,应该怎么写?  发帖心情 Post By:2022/9/21 14:39:00 [只看该作者]

组合多个统计结果,如何将按日期的月份,进行统计,帮助文件中的示例中是这样写的:
(问,要按日期的月份统计,应该怎么写?

Dim bd1 As New GroupTableBuilder("统计表1",DataTables("进货单"))
Dim
dt1 As fxDataSource
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
.Totals.AddDef("数量","销售_数量") '对数量进行统计
bd2
.Totals.AddDef("金额","销售_金额") '对金额进行统计
dt2
= bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("退货单"))
Dim
dt3 As fxDataSource
bd3
.Groups.AddDef("型号") '根据型号分组
bd3
.Totals.AddDef("数量","退货_数量") '对数量进行统计
bd3
.Totals.AddDef("金额","退货_金额") '对金额进行统计
dt3 = bd3.BuildDataSource()

dt1.Combine("型号",dt2,"型号") '将销售统计数据组合到进货统计数据
dt1
.Combine("型号",dt3,"型号") '将退货统计数据组合到进货统计数据

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


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


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

http://www.foxtable.com/webhelp/topics/3284.htm

示例二,统计不同月份的销售数量和金额 

将下面的代码复制到命令窗口: 

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Groups.AddDef(
"日期","月份"'添加日期列用于分组,并用"月份"代替原名称
b.Totals.AddDef(
"数量"'添加数量列用于统计
b.Totals.AddDef("金额"'添加金额列用于统计
b.Build 
'生成统计表
MainTable = Tables("统计表1"'打开生成的统计表


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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
  发帖心情 Post By:2022/9/21 16:13:00 [只看该作者]

以下是引用有点蓝在2022/9/21 14:41:00的发言:
http://www.foxtable.com/webhelp/topics/3284.htm

示例二,统计不同月份的销售数量和金额 

将下面的代码复制到命令窗口: 

Dim b As New GroupTableBuilder("统计表1",DataTables("订单"))
b.Groups.AddDef(
"日期","月份"'添加日期列用于分组,并用"月份"代替原名称
b.Totals.AddDef(
"数量"'添加数量列用于统计
b.Totals.AddDef("金额"'添加金额列用于统计
b.Build 
'生成统计表
MainTable = Tables("统计表1"'打开生成的统计表




改这一行吗?

bd1.Groups.AddDef("型号","月份") '根据型号分组?

但是提示错误,没有发现“型号”?


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


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

有"型号"这个名称的列?是日期型列?

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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
  发帖心情 Post By:2022/9/22 11:03: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.Totals.AddDef("初始库存", "初始_库存") '对数量进行统计
'bd3.Totals.AddDef("金额", "退货_金额") '对金额进行统计
dt3 = bd3.BuildDataSource()

dt1.Combine("品名", dt2, "品名") '将销售统计数据组合到进货统计数据
dt1.Combine("品名", dt3, "品名") '将退货统计数据组合到进货统计数据
Tables("按月统计表窗口_按月统计表").DataSource = dt1 '将统计结果绑定到Table
With DataTables("按月统计表窗口_按月统计表").DataCols '用表达式列计算库存数据
    .Add("库存_数量", GetType(Integer), "IsNull([入库_数量],0) - ISNULL([领用_数量],0) + ISNULL([初始_库存],0)")
    .Add("库存_金额", GetType(Double), "[库存_数量] /[入库_数量] * [入库_金额]") 
End With

以上红色字体标识的部分,就是添加的分组,
目的是想要达到,讲入库和领用的日期,添加到最终的统计表中,应该怎么改?

这是提示的错误描述:
An item with the same key has already been added.
[此贴子已经被作者于2022/9/22 11:06:23编辑过]

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


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

多个分组列参考:http://www.foxtable.com/webhelp/topics/2392.htm

另外这种合并统计,所有统计表的分组个数必须一致,也就是"统计表3"也必须增加一个月份的分组,否则无法关联

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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
  发帖心情 Post By:2022/9/22 13:23: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()

dt1.Combine("品名", dt2, "品名") '将销售统计数据组合到进货统计数据
Tables("按月统计表窗口_按月统计表").DataSource = dt1 '将统计结果绑定到Table
With DataTables("按月统计表窗口_按月统计表").DataCols '用表达式列计算库存数据
    .Add("库存_数量", GetType(Integer), "IsNull([入库_数量],0) - ISNULL([领用_数量],0)")
    .Add("库存_金额", GetType(Double), "[库存_数量] /[入库_数量] * [入库_金额]") 
End With

这种合并统计,所有统计表的分组个数必须一致,也就是"统计表3"也必须增加一个月份的分组,否则无法关联
既然要一致,我索性把统计表3内容全去掉了。
但是,结果还是出现错误提示:
An item with the same key has already been added.

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


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


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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
  发帖心情 Post By:2022/9/22 13:41: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 nms As String() = {"品名", "月份"} '指定连接列
dt1.Combine(nms, dt2, nms) '将销售统计数据组合到进货统计数据
dt1.Show("统计表1") '显示统计结果

结果,显示不出统计结果:

图片点击可在新窗口打开查看此主题相关图片如下:1663825205(1).png
图片点击可在新窗口打开查看


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


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

dt1.Show("统计表1") 是显示为主表的,绑定到窗口,参考:http://www.foxtable.com/webhelp/topics/2305.htm

 回到顶部
总数 21 1 2 3 下一页