Foxtable(狐表)用户栏目专家坐堂 → 请教:关于图表,能否根据目录树选择生成?


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

主题:请教:关于图表,能否根据目录树选择生成?

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


加好友 发短信
等级:六尾狐 帖子:1423 积分:11310 威望:0 精华:0 注册:2008/9/1 22:20:00
请教:关于图表,能否根据目录树选择生成?  发帖心情 Post By:2014/4/14 22:11:00 [只看该作者]

交叉统计生成统计表1,垂直分组为【单位】,因单位实在太多(40多个),太密集,故从统计表1【单位】列生成目录树,希望根据目录树选择生成特定单位图表,但出现问题,生成的图表仍然包括所有单位,而不是筛选出的结果,是不是这种办法不可行?求指点。


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


目录树点击代码如下:

Dim Value() As String
Value = e.Node.FullPath.Split("\")
Select Case e.Node.Level
    Case 0
        Tables("统计表1").Filter ="[单位] = '" & Value(0) & "'"
End Select

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("统计表1") '定义一个变量t引用数据表
Chart = e.Form.Controls("Chart2") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.DataSource = "统计表1" '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
For Each c As Col In t.Cols
    If c.Name <> "单位" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Name '设置图系的标题
        Series.X.DataField = "单位" 'X轴绑定到产品列
        Series.Y.DataField = c.Name '设置Y轴的绑定列
    End If
Next
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)
Chart.AxisX.AnnoRotation = - 45 'X轴标示逆时针旋转45度

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


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

 简单可以这样改

 

Dim Value() As String
Value = e.Node.FullPath.Split("\")
Select Case e.Node.Level
    Case 0
        Tables("统计表1").Datatable.LoadFilter ="[单位] = '" & Value(0) & "'"
        Tables("统计表1").Datatable.Load
End Select

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("统计表1") '定义一个变量t引用数据表
Chart = e.Form.Controls("Chart2") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.DataSource = "统计表1" '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
For Each c As Col In t.Cols
    If c.Name <> "单位" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Name '设置图系的标题
        Series.X.DataField = "单位" 'X轴绑定到产品列
        Series.Y.DataField = c.Name '设置Y轴的绑定列
    End If
Next
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)
Chart.AxisX.AnnoRotation = - 45 'X轴标示逆时针旋转45度

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


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

 复杂可以这样改,不去绑定表和列,直接用数值去代替。

 

 看方法一和方法二的对比 http://www.foxtable.com/help/topics/0967.htm

 


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


加好友 发短信
等级:六尾狐 帖子:1423 积分:11310 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2014/4/14 23:06:00 [只看该作者]

用2楼的办法不行,还是出现所有单位,3楼办法运行会出错!
特意做了一个例子,麻烦看一下,谢谢。

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


[此贴子已经被作者于2014-4-14 23:17:15编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1423 积分:11310 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2014/4/14 23:32:00 [只看该作者]



按照楼上的指点将这两句代码中的统计表1改为统计目标表后,OK!
Tables("表A").Datatable.LoadFilter ="[单位] = '" & Value(0) & "'"
        Tables("表A").Datatable.Load

[此贴子已经被作者于2014-4-15 10:18:20编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1423 积分:11310 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2014/4/15 10:19:00 [只看该作者]

采用LoadFilter办法后,感觉速度慢了,生成图表有延迟(统计表1的目标表有一万多行数据),正在琢磨其他办法。
比如生成统计表1后,用筛选树筛选,将筛选结果写入另一临时表2,然后将图表绑定到临时表2,是否就能间接实现根据点击目录树生成相应图表呢?

只是要随时将统计表1的筛选结果写入临时表2,用什么方式呢?


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


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

 回复6楼。不要绑定表,用编码生成

 

 好好看看这个帮助文档,你在拿数据的之前,记得对表进行一下筛选,就行了

 

 看方法一和方法二的对比 http://www.foxtable.com/help/topics/0967.htm

 

[此贴子已经被作者于2014-4-15 10:56:10编辑过]

 回到顶部