Foxtable(狐表)用户栏目专家坐堂 → [求助]组合表统计


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

主题:[求助]组合表统计

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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10071 威望:0 精华:0 注册:2013/11/8 15:27:00
[求助]组合表统计  发帖心情 Post By:2017/7/13 15:41:00 [只看该作者]

Dim dic As new Dictionary(of String, String)
For Each c As Col In Tables("统计表1").cols
 dic.add(c.Caption, c.name)
Next
If dic.ContainsKey("自产_入库数量") = False Then
 DataTables("统计表1").dataCols.add("自产_入库数量", Gettype(Double))
 dic.add("自产_入库数量", "自产_入库数量")
End If

Dim b9 As New GroupTableBuilder("AA",DataTables("统计表1"))
b9.Groups.AddDef("生产部门") '添加客户列用于分组
b9.Groups.AddDef("事业部") '添加产品列用于分组
b9.Totals.AddExp("自产_入库数量","isnull(" & dic("自产_入库数量") & ",0)")   
b9.Build
MainTable = Tables("AA")


说明:统计表1是一张通过多张表组合而成的报表,列名不规则,然后通过上述代码对这张表再进行统计,发现没有错误提示,但“自产_入库数量”这一列没出来,不知哪里问题

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/13 16:10:00 [只看该作者]

GroupTableBuilder 不能添加 AddExp

 

直接统计不行? b9.Totals.AddDef(dic("自产_入库数量"))


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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10071 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2017/7/13 16:13:00 [只看该作者]

哦,明白了,不用引号,开始我用了引号b9.Totals.AddDef(“dic("自产_入库数量")”),谢谢,解决了
[此贴子已经被作者于2017/7/13 16:16:31编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10071 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2017/7/13 20:32:00 [只看该作者]

Dim dtb As New DataTableBuilder("表B")
dtb.AddDef("日期", Gettype(Date), 4)
dtb.AddDef("费用类型", Gettype(String), 10)
dtb.AddDef("费用性质", Gettype(String), 10)
dtb.AddDef("费用科目", Gettype(String), 10)
dtb.AddDef("生产部门", Gettype(String), 10)
dtb.AddDef("金额", Gettype(Double))
dtb.Build()
Dim kms() As String = {"成1","成2","成3","成4","成5","成6","成7"}
For Each dr1 As DataRow In DataTables("固定费用分配表").DataRows
 For Each km As String In kms
 Dim dr2 As DataRow = DataTables("表B").AddNew()
 dr2("日期") = dr1("日期")
 dr2("费用类型") = dr1("费用类型")
 dr2("费用性质") = dr1("费用性质")
 dr2("费用科目") = dr1("费用科目")
 dr2("生产部门") = km
 dr2("金额") = dr1(km)
 Next
Next


Dim b As New CrossTableBuilder("统计表1",DataTables("表B")) 
Dim dt1 As fxDataSource
b.HGroups.AddDef("日期",DateGroupEnum.none) 
b.HGroups.AddDef("生产部门") 
b.VGroups.AddDef("费用性质") 
b.VGroups.AddDef("费用类型") 
b.Totals.AddDef("金额") 
dt1 = b.BuildDataSource()

dt1.Show("统计表1") 

上述代码结果如下图,没有问题

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

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

但当我加入以下代码,用上表和其他表组合成的报表进行统计时,却出现问题
Dim dic As new Dictionary(of String, String) 
For Each c As Col In Tables("统计表1").cols
 dic.add(c.Caption, c.name)
Next
If dic.ContainsKey("固定费用_管理费用") = False Then
 DataTables("统计表1").dataCols.add("固定费用_管理费用", Gettype(Double))
 dic.add("固定费用_管理费用", "固定费用_管理费用")
End If
If dic.ContainsKey("固定费用_研发费用") = False Then
 DataTables("统计表1").dataCols.add("固定费用_研发费用", Gettype(Double))
 dic.add("固定费用_研发费用", "固定费用_研发费用")
End If

Dim b9 As New GroupTableBuilder("AA",DataTables("统计表1"))
b9.Groups.AddDef("生产部门") '添加客户列用于分组
b9.Groups.AddDef("事业部") '添加产品列用于分组
b9.Totals.AddDef(dic("固定费用_管理费用"))
b9.Totals.AddDef(dic("固定费用_研发费用"))
b9.Build '生成统计表 
MainTable = Tables("AA") '打开生成的统计表

问题结果如下图

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看
上图为统计表1



[此贴子已经被作者于2017/7/13 20:35:40编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10071 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2017/7/13 20:34:00 [只看该作者]


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

图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看
上图为统计表AA
结果是出现了两个“固定费用_管理费用”,且统计表AA统计的却是没有金额的那一个,弄了很久没弄明白,求助
[此贴子已经被作者于2017/7/13 20:36:17编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/13 22:16:00 [只看该作者]

看看是否有空格影响了

 

For Each c As Col In Tables("统计表1").cols
    msgbox("aa" & c.caption & "aa")
    dic.add(c.Caption.trim(), c.name)
Next

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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10071 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2017/7/14 13:07:00 [只看该作者]

提示“aa日期aa“,这表示日期前后有空格吗


通过上面这样处理后,问题解决了,应该是空格的问题
[此贴子已经被作者于2017/7/14 13:15:19编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/14 14:19:00 [只看该作者]

 如果提示是这样,就表示有空格。

 

aa固定费用_管理费用   aa


 回到顶部