Foxtable(狐表)用户栏目专家坐堂 → 交叉统计后再次汇总如何动态取得数量等统计列?(已解决)


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

主题:交叉统计后再次汇总如何动态取得数量等统计列?(已解决)

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
交叉统计后再次汇总如何动态取得数量等统计列?(已解决)  发帖心情 Post By:2013/3/19 10:59:00 [只看该作者]

如题,先交叉统计后再进行汇总,得到如下图的结果

 


代码如下:

Dim b As New SQLCrossTableBuilder("产品出货统计","出库明细")
b.C '指定数据源
b.AddTable("出库明细","出库单号","出库单","出库单号") '添加统计表
b.HGroups.AddDef("产品编码") '添加水平分组列
b.HGroups.AddDef("{出库明细}.品名") '添加水平分组列
b.HGroups.AddDef("{出库明细}.规格") '添加水平分组列
b.VGroups.AddDef("出库日期",DateGroupEnum.Year,"{0}年") '添加日期列用于垂直分组,按年分组
b.VGroups.AddDef("出库日期","{0}月") '添加日期列用于垂直分组,按月分组
b.Totals.AddDef("{出库明细}.数量") '添加数量列用于统计
b.Build '生成统计表


MainTable = Tables("产品出货统计") '打开生成的统计表

 

'再次汇总
Dim t As Table = Tables("产品出货统计")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "产品编码"
g.TotalOn = "数量_1,数量_2"   如果交叉统计得到的数据是3个月的,这里后面还要加上 "数量_3"否则就不会汇总

g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)
t.Subtotal() '生成汇总模式

 

请问上面红色部分的统计列要如何自动得来(如果直接用"{出库明细}.数量"是会出错的,因为前面的交叉统计的结果是随着每个月的出库单自动延续下去的。红色那里要能动态变化。

 

谢谢!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:汇总模式统计.foxdb

[此贴子已经被作者于2013-11-5 23:13:52编辑过]

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/19 11:04:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/3/19 12:44:00 [只看该作者]

上传了例子。

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/19 14:21:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/3/19 14:23:00 [只看该作者]

大家辩论累了,休息当中还是来讨论这个问题吧。

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/19 14:26:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/3/19 14:46:00 [只看该作者]

谢谢,但是你发过来的,与我发上去的是一样的啊,我的意思是随着每个月入库月份的增加,不可能每次数量那里都人为的去改变代码,而是用一个通用的变量什么的。即下面这里

 

g.TotalOn = "数量_1,数量_2"


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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/19 14:47:00 [只看该作者]

用户已被锁定

 回到顶部
帅哥,在线噢!
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

这样就自动了:

 

If DataTables.Contains("产品出货统计") '如果存在产品出货统计表则删除
    DataTables.Delete("产品出货统计")
End If
Dim b As New SQLCrossTableBuilder("产品出货统计","出库明细")
b.AddTable("出库明细","出库单号","出库单","出库单号") '添加统计表
b.HGroups.AddDef("产品编码") '添加水平分组列
b.HGroups.AddDef("{出库明细}.品名") '添加水平分组列
b.HGroups.AddDef("{出库明细}.规格") '添加水平分组列
b.VGroups.AddDef("出库日期",DateGroupEnum.Year,"{0}年") '添加日期列用于垂直分组,按年分组
b.VGroups.AddDef("出库日期","{0}月") '添加日期列用于垂直分组,按月分组
b.Totals.AddDef("{出库明细}.数量") '添加数量列用于统计
b.Build '生成统计表
MainTable = Tables("产品出货统计") '打开生成的统计表

Dim t As Table = Tables("产品出货统计")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "产品编码"

For Each c As col In Tables("产品出货统计").Cols
    If c.DataCol.IsNumeric Then
            g.TotalOn = g.TotalOn & "," & c.name
    End If
Next
g.TotalOn = g.Totalon.trim(",")

g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)
t.Subtotal() '生成汇总模式


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/3/19 14:58:00 [只看该作者]

老师误会我的意思了,那个是我自己现在知道的笨办法,其实先前的交叉统计得到表的数据如下,

 


现在就是想要再对它进行分组统计,因为交叉统计生成的月分会一直增加下去,但我不可能每增加一个月都去修改一下数量

 

那里的代码啊,要怎么修改数量那里为一个通用的变量就行。或者换一种方式达到这种效果就行。

[此贴子已经被作者于2013-11-5 23:14:23编辑过]

 回到顶部
总数 11 1 2 下一页