以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  一个统计问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=94589)

--  作者:douglas738888
--  发布时间:2016/12/27 15:49:00
--  一个统计问题

请教老师,用groupTableBuilder不能实现b1.VGroups.AddDef("专业部室","专业部室_{0}") 这样的统计,用交叉统计,形成的水平合计,怎样在增加列中进行表达式计算,下面代码报错“从字符串“”无法转换为Double,无效,0.00 改为0.00%类型不匹配”

 

是否只能用代码指定固定列才行?

 

Dim b1 As New SQLCrossTableBuilder("统计表2","工作策划副表")

b1.C
b1.HGroups.AddDef("项目名称")
b1.HGroups.AddDef("设计阶段")
b1.HGroups.AddDef("部门人数")
b1.VGroups.AddDef("专业部室","专业部室_{0}")
b1.Totals.AddDef("执行人",AggregateEnum.Count) 
b1.Filter = "审批完成 = 0"
b1.HorizontalTotal = True
b1.VerticalTotal = True
Tables("统计_Table1").DataSource = b1.BuildDataSource()
DataTables("统计_Table1").DataCols.Add("占用",Gettype(Double))
Dim dr As Row
For i As Integer = 0 To Tables("统计_Table1").Rows.Count(True) - 1
    dr = Tables("统计_Table1").Rows(i,True)
    dr("占用") = Format(dr("合计") / dr("部门人数"),"0.00%")
Next


--  作者:有点色
--  发布时间:2016/12/27 15:57:00
--  

方法一:用 Gettype(String)

 

方法二:直接设置格式

 

For i As Integer = 0 To Tables("统计_Table1").Rows.Count(True) - 1
    dr = Tables("统计_Table1").Rows(i,True)
    dr("占用") = dr("合计") / dr("部门人数")
Next

Tables("统计_Table1").cols("占用").DataCol.SetFormat("0.00%")


--  作者:douglas738888
--  发布时间:2016/12/27 17:07:00
--  

老师,还是报错:从字符串“”无法转换为Double  合计列是系统生成的  HorizontalTotal: 水平方向自动汇总。
是否合计列是STRING       

 

部门人数 是 双精度   

 

b1.VGroups.AddDef("专业部室","专业部室_{0}")
b1.Totals.AddDef("执行人",AggregateEnum.Count)   这个也应该是双精度吧,还是是string

 

如果用 专业部室_变电室gdr/部门人数,提示找不到“专业部室_变电室gdr”

 

 


图片点击可在新窗口打开查看此主题相关图片如下:未标题-1.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/12/27 17:12:59编辑过]

--  作者:有点色
--  发布时间:2016/12/27 17:22:00
--  

那你那一列改成字符串,那肯定可以的

 

DataTables("统计_Table1").DataCols.Add("占用",Gettype(String))