Foxtable(狐表)用户栏目专家坐堂 → [求助]Histogram图表空值出错


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

主题:[求助]Histogram图表空值出错

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


加好友 发短信
等级:婴狐 帖子:50 积分:580 威望:0 精华:0 注册:2013/6/12 20:03:00
[求助]Histogram图表空值出错  发帖心情 Post By:2013/11/25 10:49:00 [只看该作者]

我用代码生成图表时,当数据列中有空单元格时,就不会生成Histogram图表,请问这如何是好?没有相关的属性可以设置来避免这个问题吗?

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/25 10:51:00 [只看该作者]

不要使用绑定的方式,使用循环赋值的方式,这样就可以自由做判断了. 实在不会就上个例子吧.

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


加好友 发短信
等级:婴狐 帖子:50 积分:580 威望:0 精华:0 注册:2013/6/12 20:03:00
实在不会,上传个例子,劳驾帮助解决一下  发帖心情 Post By:2013/11/25 18:22:00 [只看该作者]

谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:关于histogram图表的问题.table


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


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

 简单的做法,取巧一下

DataTables("表A").ReplaceFor("数据", 0, "数据 is null")
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= Forms("图表").Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Histogram ' 设置图表类型
Chart.DataSource = "表A" '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Series.Histogram.IntervalStart = 0 '指定起始值
Series.Histogram.IntervalWidth = 10 '指定分区宽度
Series.Histogram.IntervalNumber= 10 '指定分区个数
Series.Y.DataField = "数据" 'Y轴绑定到数量列

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


加好友 发短信
等级:婴狐 帖子:50 积分:580 威望:0 精华:0 注册:2013/6/12 20:03:00
问题  发帖心情 Post By:2013/11/26 13:28:00 [只看该作者]

谢谢您的帮助。但是有个问题,空值和0是不同的概念,我不希望空值替换为0,也不希望0替换为空值,请问还有什么解决办法?

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


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

那就不要绑定,自己编码,跳过空值的点,例如:

 

Dim Chart  As WinForm.Chart  '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim drs As List(of DataRow) = DataTables("统计表1").Select("数量  Is Not Null")
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = drs.Count '设置图系的长度
For i As Integer =  0  To drs.Count -  1  '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = drs(i)("数量") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i, drs(i)("产品")) '指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True '启用字符标示

 

要么用0替代空值,要么忽略空值,除此之外,没有两全的方法

 

 

[此贴子已经被作者于2013-11-26 14:22:15编辑过]

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


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

 你试试这样是否满足。

Dim Chart  As WinForm.Chart  '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.ChartType = ChartTypeEnum.Bar ' 设置图表类型
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = 110 '设置图系的长度
For i As Integer =  0  To 100 Step 10  '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = DataTables("表A").Compute("count(_identify)", "数据 >= " & i-10 & " And 数据 < " & i)
   Chart.AxisX.SetValueLabel(i, i) '指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True '启用字符标示

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


加好友 发短信
等级:婴狐 帖子:50 积分:580 威望:0 精华:0 注册:2013/6/12 20:03:00
谢谢  发帖心情 Post By:2013/11/28 14:04:00 [只看该作者]

非常感谢您的帮助!我需要的图表类型是Histogram,显得麻烦一些。我用了另一种方法:建立一个临时表,将非空数据复制到临时表中,再生成图表。这样做只是延迟了零点几秒。但是在原来的基础上修改程序简单多了。

 

再次感谢你的帮助!


 回到顶部