以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教:关于图表,能否根据目录树选择生成? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49237) |
-- 作者:bahamute -- 发布时间: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度 |
-- 作者:有点甜 -- 发布时间: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度
|
-- 作者:有点甜 -- 发布时间:2014/4/14 22:17:00 -- 复杂可以这样改,不去绑定表和列,直接用数值去代替。
看方法一和方法二的对比 http://www.foxtable.com/help/topics/0967.htm
|
-- 作者:bahamute -- 发布时间:2014/4/14 23:06:00 -- 用2楼的办法不行,还是出现所有单位,3楼办法运行会出错! 特意做了一个例子,麻烦看一下,谢谢。 [此贴子已经被作者于2014-4-14 23:17:15编辑过]
|
-- 作者:bahamute -- 发布时间: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 -- 发布时间:2014/4/15 10:19:00 -- 采用LoadFilter办法后,感觉速度慢了,生成图表有延迟(统计表1的目标表有一万多行数据),正在琢磨其他办法。 比如生成统计表1后,用筛选树筛选,将筛选结果写入另一临时表2,然后将图表绑定到临时表2,是否就能间接实现根据点击目录树生成相应图表呢? 只是要随时将统计表1的筛选结果写入临时表2,用什么方式呢? |
-- 作者:有点甜 -- 发布时间:2014/4/15 10:56:00 -- 回复6楼。不要绑定表,用编码生成
好好看看这个帮助文档,你在拿数据的之前,记得对表进行一下筛选,就行了
看方法一和方法二的对比 http://www.foxtable.com/help/topics/0967.htm
[此贴子已经被作者于2014-4-15 10:56:10编辑过]
|