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


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

主题:图表问题

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


加好友 发短信
等级:小狐 帖子:373 积分:3107 威望:0 精华:0 注册:2015/1/30 9:47:00
图表问题  发帖心情 Post By:2018/8/18 20:59:00 [只看该作者]

代码:
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim tbl As DataTable = DataTables("职工工资发放明细表") '定义一个变量tbl引用数据表
Dim lst As List(Of String) = tbl.GetValues("月份","身份证号 = '8' and 年 = '2018'") '获得产品名称集合
Chart = Forms("窗口1").Controls("Chart1") ' 引用窗口中的图表
Chart.VisualEffect = True 
Chart.ChartType = ChartTypeEnum.bar
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = lst.Count '设置图系的长度
For i As Integer = 0 To lst.Count -1 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = tbl.Compute("Sum(应发合计)","[身份证号] = '8' and 月份 = '"& lst(i) &"'") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i,lst(i)) '指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True '

效果:

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

问题:
1、后台数据是有3列的,也就是应该有三根柱子,可是只显示两根。
2、每刷新一次,X坐标的字符就会重叠一次。



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


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/19 9:08:00 [只看该作者]

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim tbl As DataTable = DataTables("职工工资发放明细表") '定义一个变量tbl引用数据表
Dim lst As List(Of String) = tbl.GetValues("月份","身份证号 = '8' and 年 = '2018'") '获得产品名称集合
msgbox(lst.Count) ‘弹出什么内容’
Chart = Forms("窗口1").Controls("Chart1") ' 引用窗口中的图表
Chart.VisualEffect = True 
Chart.ChartType = ChartTypeEnum.bar
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisX.ClearValueLabel
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = lst.Count '设置图系的长度
For i As Integer = 0 To lst.Count -1 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
msgbox(tbl.Compute("Sum(应发合计)","[身份证号] = '8' and 月份 = '"& lst(i) &"'") )‘弹出什么内容’
    Series.Y(i) = tbl.Compute("Sum(应发合计)","[身份证号] = '8' and 月份 = '"& lst(i) &"'") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i,lst(i)) '指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True '

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


加好友 发短信
等级:小狐 帖子:373 积分:3107 威望:0 精华:0 注册:2015/1/30 9:47:00
  发帖心情 Post By:2018/8/19 12:25:00 [只看该作者]

msgbox(lst.Count) ‘弹出什么内容’ 这个弹出的是 3
msgbox(tbl.Compute("Sum(应发合计)","[身份证号] = '8' and 月份 = '"& lst(i) &"'") )‘弹出什么内容’ 这里弹出的是2个有结果,1个是0
不知道为什么总有一个计算不到。

然后我增加到6个数据,也只计算5个;增加到7个数据,也只计算6个。总是会丢一个。



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


加好友 发短信
等级:小狐 帖子:373 积分:3107 威望:0 精华:0 注册:2015/1/30 9:47:00
  发帖心情 Post By:2018/8/19 14:04:00 [只看该作者]

Series.Length = lst.Count +1 '设置图系的长度
Series.Y(0) = 0
For i As Integer = 1 To lst.Count '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = tbl.Compute("Sum(应发合计)","[身份证号] = '8' and 月份 = '"& lst(i-1) &"'") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i,lst(i-1).Substring(5,3)) '指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True '

改成这样可以了,长度加了一个1,另外Y定了个0
现在正常了

 回到顶部