Foxtable(狐表)用户栏目专家坐堂 → 在交叉统计表增加表达列


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

主题:在交叉统计表增加表达列

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


加好友 发短信
等级:幼狐 帖子:135 积分:1380 威望:0 精华:0 注册:2013/8/7 18:14:00
在交叉统计表增加表达列  发帖心情 Post By: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()

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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)")

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


加好友 发短信
等级:幼狐 帖子:135 积分:1380 威望:0 精华:0 注册:2013/8/7 18:14:00
  发帖心情 Post By:2020/10/28 19:10:00 [只看该作者]

以下代码报错如图,代码是仿照
http://www.foxtable.com/help/index.htm?page=1911.htm  写得,求老师帮忙看下是哪里的问题

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

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

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编辑过]

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/29 8:31:00 [只看该作者]

不存在"成品率"这个列

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


加好友 发短信
等级:幼狐 帖子:135 积分:1380 威望:0 精华:0 注册:2013/8/7 18:14:00
  发帖心情 Post By:2020/10/29 11:39:00 [只看该作者]

增加了达成率列,也是同样报错

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

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
结果如图

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

[此贴子已经被作者于2020/10/29 11:43:19编辑过]

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/29 11:43:00 [只看该作者]

g.TotalOn = "宣言值1,销售金额1"

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


加好友 发短信
等级:幼狐 帖子:135 积分:1380 威望:0 精华:0 注册:2013/8/7 18:14:00
  发帖心情 Post By:2020/10/29 11:46:00 [只看该作者]

改成
g.TotalOn = "宣言值1,销售金额1"
还是同样报错

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/29 11:47:00 [只看该作者]

DataTables("业绩汇总").DataCols.Add("达成率",Gettype(Double),"iif(宣言值1=0,0,销售金额1/宣言值1)")

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


加好友 发短信
等级:幼狐 帖子:135 积分:1380 威望:0 精华:0 注册:2013/8/7 18:14:00
  发帖心情 Post By:2020/10/29 12:09:00 [只看该作者]

还是报错:为aggregateenum参数提供无效的值

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


[此贴子已经被作者于2020/10/29 12:09:25编辑过]

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


加好友 发短信
等级:超级版主 帖子:105948 积分:538809 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/29 12:10:00 [只看该作者]

请上传实例测试

 回到顶部
总数 12 1 2 下一页