Foxtable(狐表)用户栏目专家坐堂 → 关于生成统计表的问题


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

主题:关于生成统计表的问题

美女呀,离线,留言给我吧!
wymoonwalker
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:224 积分:2120 威望:0 精华:0 注册:2014/2/10 10:59:00
  发帖心情 Post By:2014/8/14 21:25:00 [只看该作者]

好啦,非常感谢甜大师!


 回到顶部
美女呀,离线,留言给我吧!
wymoonwalker
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:224 积分:2120 威望:0 精华:0 注册:2014/2/10 10:59:00
  发帖心情 Post By:2018/9/30 9:20:00 [只看该作者]

时隔四年,再次请教大师。统计的表格我想定义统计范围,所有的数据都不含两家分公司。
上半段我将代码改成  Dim g As New CrossTableBuilder("统计月报表111", DataTables("合同台帐2018"), "签订单位 Not In ('地质环境分公司') And 签订单位 Not In ('新疆分公司')")
运行正常。
下半段 Dim t As Table = Tables("统计表111")  我也想改成类似模式,但怎么调试代码都提示错误。
请问应该如何编写呢

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


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

Dim g As New CrossTableBuilder("统计月报表111", DataTables("合同台帐2018"))
g.Filter = "签订单位 Not In ('地质环境分公司','新疆分公司')"

 回到顶部
美女呀,离线,留言给我吧!
wymoonwalker
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:224 积分:2120 威望:0 精华:0 注册:2014/2/10 10:59:00
  发帖心情 Post By:2018/9/30 10:43:00 [只看该作者]

Dim g As New CrossTableBuilder("统计月报表1", DataTables("合同台帐2018"), "签订单位 Not In ('地质环境分公司') And 签订单位 Not In ('新疆分公司')")
g.HGroups.AddDef("工程类型_1","工程类型")
g.VGroups.AddDef("审批", "已签订合同额|未签订合同额")
g.Totals.AddDef("合同个数", "合同个数")
g.Totals.AddDef("合同额", "合同额")
g.HorizontalTotal = True
g.VerticalTotal = True
g.Filter = "签订单位 Not In ('地质环境分公司') And 签订单位 Not In ('新疆分公司')"
g.Build()

Dim t As New CrossTableBuilder("统计月报表111", DataTables("合同台帐2018"))
t.Filter = "签订单位 Not In ('地质环境分公司','新疆分公司')"
t.DataTable.DataCols.Add("省内项目", Gettype(Double))
t.DataTable.DataCols.Add("省外项目", Gettype(Double))
t.DataTable.DataCols.Add("民用建筑", Gettype(Double))
For Each r As Row In t.Rows
    If r.Index = t.Rows.Count - 1 Then
        r("省内项目") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程所在省 = '山东省'")
        r("省外项目") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程所在省 <> '山东省'")
        r("民用建筑") = DataTables("合同台帐2018").Compute("sum(合同额)", "项目所属行业 = '房地产业'")
           Else
        r("省内项目") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 工程所在省 = '山东省'")
        r("省外项目") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 工程所在省 <> '山东省'")
        r("民用建筑") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 项目所属行业 = '房地产业'")  
    End If
Next
t.SetColVisibleWidth("工程类型|90|合同个数_1|60|合同额_1|90|合同个数_2|60|合同额_2|90|合计_合同个数|60|合计_合同额|90|省内项目|90|省外项目|90|民用建筑|90") 
MainTable = t

 回到顶部
美女呀,离线,留言给我吧!
wymoonwalker
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:224 积分:2120 威望:0 精华:0 注册:2014/2/10 10:59:00
  发帖心情 Post By:2018/9/30 10:45:00 [只看该作者]

有点蓝大师,描黑的更改后的代码。代码替换后提示编译错误。

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/30 11:18:00 [只看该作者]

dim filter as string = "签订单位 Not In ('地质环境分公司','新疆分公司')"

Dim g As New CrossTableBuilder("统计月报表111", DataTables("合同台帐2018"))
g.Filter = filter
g.HGroups.AddDef("工程类型_1","工程类型")
g.VGroups.AddDef("审批", "已签订合同额|未签订合同额")
g.Totals.AddDef("合同个数", "合同个数")
g.Totals.AddDef("合同额", "合同额")
g.HorizontalTotal = True
g.VerticalTotal = True
g.Build()
Dim t As Table = Tables("统计月报表111")
t.DataTable.DataCols.Add("省内项目", Gettype(Double))
t.DataTable.DataCols.Add("省外项目", Gettype(Double))
t.DataTable.DataCols.Add("民用建筑", Gettype(Double))
For Each r As Row In t.Rows
    If r.Index = t.Rows.Count - 1 Then
        r("省内项目") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程所在省 = '山东省' and " & filter)
        r("省外项目") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程所在省 <> '山东省' and " & filter)
        r("民用建筑") = DataTables("合同台帐2018").Compute("sum(合同额)", "项目所属行业 = '房地产业' and " & filter)
           Else
        r("省内项目") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 工程所在省 = '山东省' and " & filter)
        r("省外项目") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 工程所在省 <> '山东省' and " & filter)
        r("民用建筑") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 项目所属行业 = '房地产业' and " & filter)  
    End If
Next
t.SetColVisibleWidth("工程类型|90|合同个数_1|60|合同额_1|90|合同个数_2|60|合同额_2|90|合计_合同个数|60|合计_合同额|90|省内项目|90|省外项目|90|民用建筑|90") 
MainTable = t

 回到顶部
美女呀,离线,留言给我吧!
wymoonwalker
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:224 积分:2120 威望:0 精华:0 注册:2014/2/10 10:59:00
  发帖心情 Post By:2018/9/30 15:17:00 [只看该作者]

很对,谢谢有点蓝大师!
如有时间请指教,除了第一句对统计表的范围定义外,我使用的旧代码跟下面的是一样的。特指这一段以后的     Dim t As Table = Tables("统计月报表111")
但是为什么我用现在的旧代码加上第一句代码,后半段的累计数字就不对,是全表累计。
但是我全部复制你的代码,后半段的累计数字就是正确的,是除了两个分公司之外的累计。
我看了半天也没看出区别来啊

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/30 15:57:00 [只看该作者]

r("省内项目") = DataTables("合同台帐2018").Compute("sum(合同额)", "工程所在省 = '山东省' and " & filter)

 回到顶部
总数 28 上一页 1 2 3