Foxtable(狐表)用户栏目专家坐堂 → 图表的筛选问题


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

主题:图表的筛选问题

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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
图表的筛选问题  发帖心情 Post By:2012/9/17 11:06:00 [只看该作者]

在做图表时 遇到个筛选的问题

我的原表没有“年”这个列,只有“日期”列,想在窗体上做个年份的筛选,并能根据筛选的值,让图表只显示选定年份的数据

不会写代码,望高手赐教!

谢谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试用.table


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

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/17 12:44:00 [只看该作者]

能日期筛选,就能按年筛选,按年筛选,就是筛选这年的1月1日到12月31日的行,例如2008年的:

 

Dim dt1 As  Date = New Date(2008,1,1)

Dim dt2 As Date = New Date(2008,12,31)

....Filter = "日期 >= #" dt1 & "# And 日期 <= #" & dt2 & "#"


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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2012/9/17 13:25:00 [只看该作者]

感谢狐爸的提示,我在组合框内容变更事件里写了下面的代码

 

=======================================================

Dim nf As WinForm.ComboBox = e.Form.Controls("ComboBox1")
nf.ComboList = DataTables("统计表1").GetComboListString("年")            '定义nf(年份)这个组合框,内容为统计表1的“年”列的值

 

Tables("表B").Filter = ("日期 >= #1/1/" & nf.Text & "# and 日期 <= #12/31/" & nf.Text & "#")     '利用组合框的值来对表B做筛选 筛选出当年的数据

 

Dim g As New CrossTableBuilder("统计表1", DataTables("表B"))              ’下面是复制的系统自动生成的交叉汇总的代码
g.HGroups.AddDef("日期", DateGroupEnum.Year, "年")
g.VGroups.AddDef("商品")
g.Totals.AddDef("销量", "销量")
g.Build()

=========================================================

当我点选组合框的值时,陷入死循环,我估计是由于组合框的值来自于汇总的临时表,而点选组合框的值对源表B做筛选,导致筛选、汇总之间陷入死循环

不知狐爸有啥好建议没有?

 


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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2012/9/17 13:27:00 [只看该作者]

我这个问题的瓶颈在于,如何通过“日期”列,让组合框获得“年份”的值(不重复)

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/17 13:53:00 [只看该作者]

另外增加一个统计按钮,单击才开始进行统计。

 

至于年份,用数值框直接输入,默认值设置为当年,用上下微调按钮来调整。

一定要选的话,在窗口的AfterLoad事件加入代码:

 

Dim min As Date = DataTables("表B").Compute("Min(日期)")
Dim max As Date = DataTables("表B").Compute("Max(日期)")
Dim cmb As WinForm.ComboBox = e.Form.Controls("ComboBox1")
For y As Integer = min.Year To max.Year
    cmb.items.add(y)
Next

 

 


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/9/17 14:01:00 [只看该作者]

动态增加一个“年份”列,一切都简单了···

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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2012/9/17 14:15:00 [只看该作者]

以下是引用mr725在2012-9-17 14:01:00的发言:
动态增加一个“年份”列,一切都简单了···

怎么增加?不会啊!


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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2012/9/17 14:22:00 [只看该作者]

以下是引用狐狸爸爸在2012-9-17 13:53:00的发言:

另外增加一个统计按钮,单击才开始进行统计。

 

至于年份,用数值框直接输入,默认值设置为当年,用上下微调按钮来调整。

一定要选的话,在窗口的AfterLoad事件加入代码:

 

Dim min As Date = DataTables("表B").Compute("Min(日期)")
Dim max As Date = DataTables("表B").Compute("Max(日期)")
Dim cmb As WinForm.ComboBox = e.Form.Controls("ComboBox1")
For y As Integer = min.Year To max.Year
    cmb.items.add(y)
Next

 

 

运行的效果是:点选一次组合框,多出来一次年份,越点越多


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/17 14:25:00 [只看该作者]

 在窗口的AfterLoad事件加入代码

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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2012/9/17 15:13:00 [只看该作者]

增加了“年份”的列 解决了

 回到顶部