Foxtable(狐表)用户栏目专家坐堂 → 交叉统计的精简版的实现


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

主题:交叉统计的精简版的实现

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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
交叉统计的精简版的实现  发帖心情 Post By:2018/8/8 17:50:00 [只看该作者]


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

 

 

代码:

Dim b As New SQLCrossTableBuilder("统计表1","person")
For Each r As Row In Tables("统计1").Rows
    b.HGroups.AddDef(r("分组列")) '添加列用于水平分组
Next

For Each r As Row In Tables("统计2").Rows
    b.VGroups.AddDef(r("分组列")) '添加列用于水平分组
Next

For Each r As Row In Tables("统计3").Rows
    b.Totals.AddDef(r("统计列")) '添加列用于统计
Next

If e.Form.Controls("CheckBox1").Select = True Then   '水平方向生成汇总
    b.HorizontalTotal = True
End If

If e.Form.Controls("CheckBox2").Select = True Then   '垂直方向生成汇总
    b.VerticalTotal = True
End If

b.Build '生成统计表
MainTable = Tables("统计表1") '打开生成的统计表
Tables("统计_Table1").DataSource= b.BuildDataSource   '统计表放入指定窗口表

 

 

 

老师,我觉的我上面代码的逻辑是正确的,不知为啥报错?请老师指点一下


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


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

1、把下面的删除,报什么错?

 

b.Build '生成统计表
MainTable = Tables("统计表1") '打开生成的统计表

 

2、做个例子发上来测试。


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/8 18:04:00 [只看该作者]

以下是引用有点甜在2018/8/8 17:55:00的发言:

1、把下面的删除,报什么错?

 

b.Build '生成统计表
MainTable = Tables("统计表1") '打开生成的统计表

 

2、做个例子发上来测试。


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

我马上做例子给您


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


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

以下是引用susu312在2018/8/8 18:04:00的发言:


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

我马上做例子给您

 

是不是你列名不匹配,你数据库里面的列名不是英文来的么?你现在改成中文了明显不对。


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/8 18:39:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目19.table

麻烦老师了


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


加好友 发短信
等级:五尾狐 帖子:1077 积分:9923 威望:0 精华:0 注册:2008/9/2 11:34:00
  发帖心情 Post By:2018/8/8 19:40:00 [只看该作者]

你可以用系统自带的交叉统计功能生成一个看看里面的代码,你的统计代码不对,SQLCrossTableBuilder是对外部表的,你这是内部表,不是好好看看帮助吧

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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/8 20:25:00 [只看该作者]

以下是引用bohe在2018/8/8 19:40:00的发言:
你可以用系统自带的交叉统计功能生成一个看看里面的代码,你的统计代码不对,SQLCrossTableBuilder是对外部表的,你这是内部表,不是好好看看帮助吧

你实现过这个功能么?


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


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

1、

 

Dim b As New SQLCrossTableBuilder("统计表1","person")
For Each r As Row In Tables("统计1").Rows
    b.HGroups.AddDef(r("分组列")) '添加列用于水平分组
Next

For Each r As Row In Tables("统计2").Rows
    b.VGroups.AddDef(r("分组列")) '添加列用于水平分组
Next

For Each r As Row In Tables("统计3").Rows
    If r("统计类型") = "记录数"
        b.Totals.AddDef(r("统计列"),AggregateEnum.count) '添加列用于统计
    ElseIf r("统计类型") = "累积值"
        b.Totals.AddDef(r("统计列"),AggregateEnum.sum) '添加列用于统计
    End If
Next

b.Build '生成统计表

 

 

2、是不是你列名不匹配,你数据库里面的列名不是英文来的么?你现在改成中文了明显不对。


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


加好友 发短信
等级:四尾狐 帖子:997 积分:6752 威望:0 精华:0 注册:2018/6/8 16:17:00
  发帖心情 Post By:2018/8/8 20:58:00 [只看该作者]

以下是引用有点甜在2018/8/8 20:31:00的发言:

1、

 

Dim b As New SQLCrossTableBuilder("统计表1","person")
For Each r As Row In Tables("统计1").Rows
    b.HGroups.AddDef(r("分组列")) '添加列用于水平分组
Next

For Each r As Row In Tables("统计2").Rows
    b.VGroups.AddDef(r("分组列")) '添加列用于水平分组
Next

For Each r As Row In Tables("统计3").Rows
    If r("统计类型") = "记录数"
        b.Totals.AddDef(r("统计列"),AggregateEnum.count) '添加列用于统计
    ElseIf r("统计类型") = "累积值"
        b.Totals.AddDef(r("统计列"),AggregateEnum.sum) '添加列用于统计
    End If
Next

b.Build '生成统计表

 

 

2、是不是你列名不匹配,你数据库里面的列名不是英文来的么?你现在改成中文了明显不对。

Dim nums1() As String={"sex","age","birth", _
                     "edu","workdate","politicalStatus", _
                     "retiredPost","title","leaOrRetire", _
                    "retireTime","proTecPost","partyTime", _
                     "organName","partyStanding","retiredDep"}
Dim nums2()  As String={"性别","年龄","出生年月", _
                     "学历","参加工作日期","政治面貌", _
                     "离退休职务","享受待遇","状态", _
                    "离退休时间","专业技术职务","入党时间", _
                     "单位","党龄","部门"}

 

Dim b As New SQLCrossTableBuilder("统计表1","person")
For Each r As Row In Tables("统计1").Rows
    int index1 As Integer=Array.indexof(r("分组列"))
    b.HGroups.AddDef("nums1(index1)")'添加列用于水平分组
Next

For Each r As Row In Tables("统计2").Rows
    int index2 As Integer=Array.indexof(r("分组列"))
    b.VGroups.AddDef("nums1(index2)") '添加列用于垂直分组
Next

For Each r As Row In Tables("统计3").Rows
    int index As Integer=Array.indexof(r("统计列"))
    b.Totals.AddDef("nums1(index3)", AggregateEnum.Count) '添加列用于统计
Next

b.Build '生成统计表

 

 

老师,我这样思路逻辑对了,但是报错:方法参数必须在括号中?


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


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

Dim nums1() As String={"sex","age","birth", _
"edu","workdate","politicalStatus", _
"retiredPost","title","leaOrRetire", _
"retireTime","proTecPost","partyTime", _
"organName","partyStanding","retiredDep"}
Dim nums2()  As String={"性别","年龄","出生年月", _
"学历","参加工作日期","政治面貌", _
"离退休职务","享受待遇","状态", _
"离退休时间","专业技术职务","入党时间", _
"单位","党龄","部门"}

 

Dim b As New SQLCrossTableBuilder("统计表1","person")
For Each r As Row In Tables("统计1").Rows
    Dim index As Integer=Array.indexof(nums1,r("分组列"))
    b.HGroups.AddDef(nums1(index))'添加列用于水平分组
Next

For Each r As Row In Tables("统计2").Rows
    Dim index As Integer=Array.indexof(nums1,r("分组列"))
    b.VGroups.AddDef(nums1(index)) '添加列用于垂直分组
Next

For Each r As Row In Tables("统计3").Rows
    Dim index As Integer=Array.indexof(nums1,r("统计列"))
    b.Totals.AddDef(nums1(index), AggregateEnum.Count) '添加列用于统计
Next

b.Build '生成统计表


 


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