以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 在交叉统计表增加表达列 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157295) |
|
-- 作者:北狐 -- 发布时间:2020/10/11 14:51:00 -- 在交叉统计表增加表达列 Dim g As New CrossTableBuilder("个人销售绩效", dt) g.HGroups.AddDef("组别") g.HGroups.AddDef("姓名") g.HGroups.AddDef("宣言值") g.HGroups.AddDef("成色组") g.VGroups.AddDef("年") g.VGroups.AddDef("月") g.VGroups.AddDef("日") g.Totals.AddDef("销售金额", "销售金额") g.HorizontalTotal = True g.VerticalTotal = True g.HorizontalTotal = True g.Build() DataTables("个人销售绩效").DataCols.Add("宣言值1",Gettype(Double),"宣言值") ’不报错 DataTables("个人销售绩效").DataCols.Add("销售总额",Gettype(Double),"合计") ‘不报错 DataTables("个人销售绩效").DataCols.Add("达成率",Gettype(Double),"合计/宣言值") 执行此行代码报错:无法设置列“达成率“的表达式,原因:无法在System.Double和System.String上执行”/"操作。 这种情况如何避免? DataTables("个人销售绩效").DataCols("达成率").SetFormat("#0.00%") Tables("个人销售绩效").AutoSizeCols()
|
|
-- 作者:有点蓝 -- 发布时间:2020/10/11 20:53:00 -- 试试 DataTables("个人销售绩效").DataCols.Add("达成率",Gettype(Double),"IIF(宣言值 is null orelse 宣言值=\'\',null,合计/Convert([宣言值], \'System.Double\'))") 或者
DataTables("个人销售绩效").DataCols.Add("宣言值1",Gettype(Double),"宣言值") DataTables("个人销售绩效").DataCols.Add("达成率",Gettype(Double),"IIF(宣言值1=0,0,合计/宣言值1)") |
|
-- 作者:北狐 -- 发布时间:2020/10/28 19:10:00 -- 以下代码报错如图,代码是仿照 http://www.foxtable.com/help/index.htm?page=1911.htm 写得,求老师帮忙看下是哪里的问题 Dim g1 As New GroupTableBuilder("业绩汇总", DataTables("统计表2")) g1.Groups.AddDef("组别") g1.Groups.AddDef("姓名") g1.Totals.AddDef("宣言值") g1.Totals.AddDef("销售金额") g1.SubTotal = True g1.Build() MainTable = Tables("业绩汇总") Dim t As Table = Tables("业绩汇总") Dim g As Subtotalgroup t.SubtotalGroups.Clear() g = New Subtotalgroup g.GroupOn = "组别" g.TotalOn = "宣言值,销售金额" g.DateGroup = DateGroupEnum.Day t.SubtotalGroups.Add(g) g = New Subtotalgroup g.GroupOn = "*" g.TotalOn = "宣言值,销售金额" t.SubtotalGroups.Add(g) t.Subtotal() Dim r As Row For i As Integer = 0 To t.Rows.Count(True) - 1 r = t.Rows(i,True) If r.IsGroup Then r("成品率") = r("销售金额") / r("宣言值") End If Next [此贴子已经被作者于2020/10/28 19:13:03编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2020/10/29 8:31:00 -- 不存在"成品率"这个列 |
|
-- 作者:北狐 -- 发布时间:2020/10/29 11:39:00 -- 增加了达成率列,也是同样报错 Dim g1 As New GroupTableBuilder("业绩汇总", DataTables("统计表2")) g1.Groups.AddDef("组别") g1.Groups.AddDef("姓名") g1.Totals.AddDef("宣言值") g1.Totals.AddDef("销售金额") g1.Build() MainTable = Tables("业绩汇总") DataTables("业绩汇总").DataCols.Add("宣言值1",Gettype(Double),"宣言值") DataTables("业绩汇总").DataCols.Add("销售金额1",Gettype(Double),"销售金额") Tables("业绩汇总").Cols("宣言值1").Visible=False \'隐藏列 Tables("业绩汇总").Cols("销售金额1").Visible=False \'隐藏列 DataTables("业绩汇总").DataCols.Add("达成率",Gettype(Double),"销售金额1/宣言值1") DataTables("业绩汇总").DataCols("达成率").SetFormat("#0.00%") Dim t As Table = Tables("业绩汇总") Dim g As Subtotalgroup t.SubtotalGroups.Clear() g = New Subtotalgroup g.GroupOn = "组别" g.TotalOn = "宣言值,销售金额" t.SubtotalGroups.Add(g) g = New Subtotalgroup ‘测试后,发现这小节代码添加后,才会报错 g.GroupOn = "*" g.TotalOn = "宣言值,销售金额" t.SubtotalGroups.Add(g) t.Subtotal() ’这小节代码 Dim r As Row For i As Integer = 0 To t.Rows.Count(True) - 1 r = t.Rows(i,True) If r.IsGroup Then r("达成率") = r("销售金额") / r("宣言值") End If Next 结果如图
[此贴子已经被作者于2020/10/29 11:43:19编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2020/10/29 11:43:00 -- g.TotalOn = "宣言值1,销售金额1" |
|
-- 作者:北狐 -- 发布时间:2020/10/29 11:46:00 -- 改成
|
|
-- 作者:有点蓝 -- 发布时间:2020/10/29 11:47:00 -- DataTables("业绩汇总").DataCols.Add("达成率",Gettype(Double),"iif(宣言值1=0,0,销售金额1/宣言值1)") |
|
-- 作者:北狐 -- 发布时间:2020/10/29 12:09:00 -- 还是报错:为aggregateenum参数提供无效的值 [此贴子已经被作者于2020/10/29 12:09:25编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2020/10/29 12:10:00 -- 请上传实例测试 |