Foxtable(狐表)用户栏目专家坐堂 → [求助]多表交叉统计 动态添加项


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

主题:[求助]多表交叉统计 动态添加项

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
[求助]多表交叉统计 动态添加项  发帖心情 Post By:2017/2/13 11:55:00 [只看该作者]

设计了一个“SQLCrossTableBuilder”多表交叉统计的窗口,部分代码不会写,请大师在有空的时候帮助看看:

1、“添加分析表”复选框来自所有数据表 的表名列表;
     “垂直分组列”、“水平分组列”、“数据分析列”来自“表列管理” 表中的[列名];
     “统计条件”来自文本框右侧的筛选按钮;
2、不会写“记住条件”的代码;
3、“统计”按钮的代码只写了固定统计代码,不会写动态添加表或列字段代码;

请大师指教!谢谢!


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

附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多表统计-例子.table


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/13 12:16:00 [只看该作者]

 没看懂你想要做什么。你固定代码执行都有错啊。

 

 根据你的代码这样改

 

Dim b As New SQLCrossTableBuilder("统计表1","分析数据")
For Each s As String In c5.text.Split("|")
    b.AddTable("分析数据","公历年月日",s,"时间") '添加统计表
Next

For Each s As String In c6.text.Split("|")
    b.HGroups.AddDef(s) '添加列用于垂直分组
Next

For Each s As String In c7.text.Split("|")
    b.VGroups.AddDef(s) '添加列用于水平分组
Next
For Each s As String In c8.text.Split("|")
    b.Totals.AddDef(s) '添加列用于统计
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

If e.Form.Controls("CheckBox3").Select = True Then   '自动生成汇总模式
    b.Subtotal = True
End If

'If e.Form.Controls("CheckBox4").Select = True Then
    ''记住所有
    'Dim ndr As DataRow = DataTables("表名").addnew
    'ndr("名称") = "默认"
    'ndr("表") = c5.text
    'ndr("水平分组") = c6.text
    'ndr("垂直分组") = c7.Text
'End If

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


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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/2/13 13:24:00 [只看该作者]

谢谢老师!我按照你写的代码重新修改了一下,但是运行提示“jion错误”。另外我新建了一个“操作日志”的表,但“记住条件”的代码没起作用。请老师抽空再给看看。


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

附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多表统计-例子.table


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/13 14:18:00 [只看该作者]

 是不是一开始你用交叉统计就是错的?你要做什么?固定的统计你怎么写?

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


加好友 发短信
等级:四尾狐 帖子:962 积分:8505 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/2/13 16:27:00 [只看该作者]

放入命令窗口执行没错呀:

Dim b As New SQLCrossTableBuilder("统计表1","分析数据") 

b.AddTable("分析数据","公历年月日","数据之上海1","时间") '添加统计表
b.AddTable("分析数据","公历年月日","数据之上海2","时间") '添加统计表
b.AddTable("分析数据","公历年月日","数据之上海3","时间") '添加统计表
b.AddTable("分析数据","公历年月日","数据之上海4","时间") '添加统计表
b.AddTable("分析数据","公历年月日","数据之上海5","时间") '添加统计表

b.HGroups.AddDef("农历年份") '添加列用于垂直分组
b.HGroups.AddDef("阳历月份") '添加列用于垂直分组
'
b.VGroups.AddDef("农历月") '添加列用于水平分组

b.Totals.AddDef("SH000001上证指数") '添加列用于统计

'b.Filter = Forms("筛选窗口").Controls("TextBox1").Text 
b.Subtotal = True '生成汇总模式

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

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/13 16:36:00 [只看该作者]

代码没有问题。添加分析表,不能勾选【分析数据】等表。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/2/13 16:38:00 [只看该作者]

记住条件那里,改成

 

If e.Form.Controls("CheckBox4").checked = True Then
    '记住所有
    Dim ndr As DataRow = DataTables("操作日志").addnew
    ndr("名称") = "默认"
    ndr("表") = e.Form.Controls("CheckedComboBox5").text
    ndr("水平分组") = e.Form.Controls("CheckedComboBox6").text
    ndr("垂直分组") = e.Form.Controls("CheckedComboBox7").Text
End If


 回到顶部