以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  分组统计表增加列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67422)

--  作者:一笑
--  发布时间:2015/4/23 23:30:00
--  分组统计表增加列
有如下分组统计代码,想统计表上增加一列“财务”,如最后一句用代码1,则不会出现“财务”列,用代码2,则不会出现小计行,如何兼得?

Dim g As New GroupTableBuilder("机型汇总", DataTables("时间"))
g.Groups.AddDef(分组)
g.Groups.AddDef("飞行日期", "月")
g.Totals.AddDef(汇总)
g.Subtotal = True
g.Build()
DataTables("机型汇总").DataCols.Add("财务",Gettype(String),32)

1. Tables("筛选_Table1").DataSource = g.BuildDataSource()
2. Tables("筛选_Table1").DataSource = DataTables("机型汇总")

--  作者:kgdce
--  发布时间:2015/4/24 1:22:00
--  
Tables("筛选_Table1").datatable.datacols.add("财务“,gettype(string,32))
--  作者:狐狸爸爸
--  发布时间:2015/4/24 8:37:00
--  
增加列之后,原有的汇总模式会取消。

但是你可以增加列之后,用代码给统计表设置汇总模式:
http://www.foxtable.com/help/topics/1372.htm


--  作者:一笑
--  发布时间:2015/5/4 15:24:00
--  
打算在交叉统计中新增“小计”,且表达式为[轻度] + [严重](按“性质”分组:分为轻度和严重事件),运行结果能实习新增“小计”列,如图

图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图15年05月04日1516_1.jpg
图片点击可在新窗口打开查看
但无法计算,提示无“轻度”列,

代码如下,请教问题在哪儿,谢谢

Dim b As New CrossTableBuilder("交叉统计",DataTables("事件汇总"))
b.HGroups.AddDef("PF")
b.VGroups.AddDef("性质")
b.HGroups.AddDef("事件名称")
b.Totals.AddDef("次数")
Tables("事件统计_Table1").DataSource = b.BuildDataSource()
Tables("事件统计_Table1").DataTable.datacols.add("小计",Gettype(Integer), 32, "[轻度] + [严重]")


--  作者:Bin
--  发布时间:2015/5/4 15:27:00
--  
如果你这个是统计出来表,列名和标题可能并不是一致

用如下方式获得列名

Dim cs As new Dictionary(of String,String)
For Each c As Col In Tables("交叉统计表").Cols
       cs.Add(c.Caption,c.Name)
Next
Tables("事件统计_Table1").DataTable.datacols.add("小计",Gettype(Integer), 32, "[" & cs(轻度) & "] + [" & cs("严重") & "]")

--  作者:一笑
--  发布时间:2015/5/5 9:24:00
--  
报错,说是未声明名称“轻度”。
--  作者:Bin
--  发布时间:2015/5/5 9:25:00
--  
说明你根本就没这个列.连标题都没.
--  作者:大红袍
--  发布时间:2015/5/5 9:30:00
--  

 加一个引号

 

Dim cs As new Dictionary(of String,String)
For Each c As Col In Tables("交叉统计表").Cols
       cs.Add(c.Caption,c.Name)
Next
Tables("事件统计_Table1").DataTable.datacols.add("小计",Gettype(Integer), 32, "[" & cs("轻度") & "] + [" & cs("严重") & "]")

--  作者:一笑
--  发布时间:2015/5/21 9:07:00
--  
现在有个小问题,当“轻度”或“严重”其中一个为空时,小计列就不相加。想用IIF,为空时就作为零,然后相加。但不会写,求教,谢谢
--  作者:Bin
--  发布时间:2015/5/21 9:09:00
--  
Tables("事件统计_Table1").DataTable.datacols.add("小计",Gettype(Integer), 32, "Isnull([" & cs(轻度) & "],0) + isnull([" & cs("严重") & "],0)")