以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  图表生成报错(无效数据类型)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=76035)

--  作者:一笑
--  发布时间:2015/10/20 14:06:00
--  图表生成报错(无效数据类型)
1. 表“月事件率”中“月”列的属性为微整数,按以下代码绑定表然后生成图表,报错“无效数据类型”,(测试过就是“月”列的问题),求解,谢谢

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.DataSource = "月事件率" \'设置绑定表
Chart.SeriesList.Clear() \'清除图表原来的图系
Series = Chart.SeriesList.Add() \'增加一个图系
Series.X.DataField = "月" \'X轴绑定到月份列
Series.Y.DataField = "总严重发生率" \'Y轴绑定到数量列

2. 另外,如果要对月份进行筛选,比如2015年以后,DataFilter该如何写?

--  作者:大红袍
--  发布时间:2015/10/20 14:25:00
--  

1、做例子上来。

 

2、Chart.DataFilter = "日期 >= #" & new date(2015,1,1) & "#"


--  作者:一笑
--  发布时间:2015/10/20 15:01:00
--  
请见附件。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:图表1020.zip




--  作者:大红袍
--  发布时间:2015/10/20 15:15:00
--  

微整数不行,不能绑定。

 

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar
Chart.DataSource = "月事件率" \'设置绑定表
Chart.SeriesList.Clear() \'清除图表原来的图系
Series = Chart.SeriesList.Add() \'增加一个图系
Chart.DataFilter = "年 >= 2015"
Series.X.DataField = "月" \'X轴绑定到月份列
Series.Y.DataField = "总严重事件" \'Y轴绑定到数量列


--  作者:大红袍
--  发布时间:2015/10/20 15:17:00
--  

或者用代码

 

Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("月事件率") \'定义一个变量t引用数据表
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.SeriesList.Clear() \'清除图表原来的图系
Series = Chart.SeriesList.Add() \'增加一个图系
t.filter = "年 >= 2015"
Series.Length = t.Rows.Count \'图系的数据点数等于表的行数
For i As Integer = 0 To t.Rows.Count - 1 \'指定每个数据点的位置
    Series.X(i) = t.Rows(i)("月") \'指定水平坐标
    Series.Y(i) = t.Rows(i)("总严重事件") \'指定垂直坐标
Next


--  作者:一笑
--  发布时间:2015/10/20 16:18:00
--  
chart.LegendCompass = South报错。要把图例放在底部,该如何写?
谢谢

--  作者:大红袍
--  发布时间:2015/10/20 16:19:00
--  
Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)
--  作者:一笑
--  发布时间:2015/10/21 9:00:00
--  
如果要对月份进行筛选,只显示表的最后12行,DataFilter该如何写?谢谢
--  作者:Hyphen
--  发布时间:2015/10/21 9:11:00
--  

Dim i As Integer = Tables("月事件率").Rows(Tables("月事件率").Rows.Count-1)("_Identify")

Tables("月事件率").Filter = "[_Identify] >= " & i-11


--  作者:大红袍
--  发布时间:2015/10/21 9:21:00
--  
Dim Chart As WinForm.Chart \'定义一个图表变量
Dim Series As WinForm.ChartSeries \'定义一个图系变量
Dim t As Table = Tables("月事件率") \'定义一个变量t引用数据表
Chart= e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.SeriesList.Clear() \'清除图表原来的图系
Series = Chart.SeriesList.Add() \'增加一个图系
t.Sort = "年,月"
Series.Length = 12 \'图系的数据点数等于表的行数
For r As Integer = 0 To 11 \'指定每个数据点的位置
    Dim i As Integer = t.count-12+r
    Series.X(r) = t.Rows(i)("月") \'指定水平坐标
    Series.Y(r) = t.Rows(i)("总严重事件") \'指定垂直坐标
Next