以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]组合表统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103652)

--  作者:lgj716330
--  发布时间: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是一张通过多张表组合而成的报表,列名不规则,然后通过上述代码对这张表再进行统计,发现没有错误提示,但“自产_入库数量”这一列没出来,不知哪里问题

--  作者:有点甜
--  发布时间:2017/7/13 16:10:00
--  

GroupTableBuilder 不能添加 AddExp

 

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


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

--  作者:lgj716330
--  发布时间: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
--  发布时间:2017/7/13 20:34:00
--  

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

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

--  作者:有点甜
--  发布时间: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
--  发布时间:2017/7/14 13:07:00
--  
提示“aa日期aa“,这表示日期前后有空格吗


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

--  作者:有点甜
--  发布时间:2017/7/14 14:19:00
--  

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

 

aa固定费用_管理费用   aa