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


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

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

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


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

谢谢甜老师!


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140814180049.jpg
图片点击可在新窗口打开查看

就是这种效果。

代码难度好大,上半段代码能看明白,下半段就似懂非懂了。

还有我想再生成一列“省外项目”(山东省以外)的话,加了这两行成功了。

t.DataTable.DataCols.Add("省外", Gettype(Double))

 

r("省外") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型_1") & "' and 工程所在省 <> '山东省'")
有更简单的代码的话请甜老师指教。

 

还有请教甜老师,省内、省外、民用建筑这几列怎么实现合计啊?


 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/14 18:30:00 [只看该作者]

代码

 

Dim g As New CrossTableBuilder("统计表111", DataTables("合同台帐"))
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("合同台帐").Compute("sum(合同额)", "工程所在省 = '山东省'")
        r("民用建筑") = DataTables("合同台帐").Compute("sum(合同额)", "项目所属行业 = '民用建筑'")
        r("省外") = DataTables("合同台帐").Compute("sum(合同额)", "工程所在省 <> '山东省'")
    Else
        r("山东省") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型_1") & "' and 工程所在省 = '山东省'")
        r("民用建筑") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型_1") & "' and 项目所属行业 = '民用建筑'")
        r("省外") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型_1") & "' and 工程所在省 <> '山东省'")
    End If
Next

MainTable = t


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


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

真棒!

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


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

工程类型

----------   生成的表中这个怎么改成工程类型?我试着调了一个位置的代码,都报错

     1


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/14 19:08:00 [只看该作者]

Dim g As New CrossTableBuilder("统计表111", DataTables("合同台帐"))
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("合同台帐").Compute("sum(合同额)", "工程所在省 = '山东省'")
        r("民用建筑") = DataTables("合同台帐").Compute("sum(合同额)", "项目所属行业 = '民用建筑'")
        r("省外") = DataTables("合同台帐").Compute("sum(合同额)", "工程所在省 <> '山东省'")
    Else
        r("山东省") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 工程所在省 = '山东省'")
        r("民用建筑") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 项目所属行业 = '民用建筑'")
        r("省外") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 工程所在省 <> '山东省'")
    End If
Next

MainTable = t


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


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

好了!

大神,俺崇拜你!


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


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

生成的统计表列宽都是一样的,能保存调整列宽行宽后的样式吗?下次打开是上次调整后的样式?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/14 19:42:00 [只看该作者]

 你可以写进代码里

 

http://www.foxtable.com/help/topics/1775.htm

 


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


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


图片点击可在新窗口打开查看此主题相关图片如下:qq截图222.jpg
图片点击可在新窗口打开查看
Tables("统计月报表1").SetColVisibleWidth("工程类型|90|未签订合同额_合同个数|70|未签订合同额_合同额|90|已签订合同额_合同个数|70|已签订合同额_合同额|90|合计_合同个数|70|合计_合同额|90|省内项目|90|省外项目|90|民用建筑|90")

写代码后已签和未签都隐藏了,反复看了,没写错什么啊,哪儿不对?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/14 20:13:00 [只看该作者]

Dim g As New CrossTableBuilder("统计表111", DataTables("合同台帐"))
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("合同台帐").Compute("sum(合同额)", "工程所在省 = '山东省'")
        r("民用建筑") = DataTables("合同台帐").Compute("sum(合同额)", "项目所属行业 = '民用建筑'")
        r("省外") = DataTables("合同台帐").Compute("sum(合同额)", "工程所在省 <> '山东省'")
    Else
        r("省内") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 工程所在省 = '山东省'")
        r("民用建筑") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 项目所属行业 = '民用建筑'")
        r("省外") = DataTables("合同台帐").Compute("sum(合同额)", "工程类型_1 = '" & r("工程类型") & "' and 工程所在省 <> '山东省'")
    End If
Next
t.SetColVisibleWidth("工程类型|90|合同个数_1|70|合同额_1|90|合同个数_2|70|合同额_2|90|合计_合同个数|70|合计_合同额|90|省内|90|省外|90|民用建筑|90")

MainTable = t


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