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


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

主题:[求助]图表问题

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


加好友 发短信
等级:婴狐 帖子:11 积分:143 威望:0 精华:0 注册:2023/9/10 20:37:00
[求助]图表问题  发帖心情 Post By:2023/11/8 14:45:00 [只看该作者]


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

窗口的afterload 事件:
'-----------------------生成库存图表-------------------------------
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("资材信息表") '定义一个变量t引用数据表
Chart = e.Form.Controls("库存统计") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.DataSource = "资材信息表" '设置绑定表
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 = "金额" '设置Y轴的绑定列
    End If
Next
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass = CompassEnum.South '图列显示在南方(底端)

'-----------------------生成库别图表-------------------------------
Dim Chart1 As WinForm.Chart '定义一个图表变量
Dim Series2 As WinForm.ChartSeries '定义一个图系变量
Dim t2 As Table = Tables("资材信息表") '定义一个变量t引用数据表
Chart1 = e.Form.Controls("库别统计") ' 引用窗口中的图表
Chart1.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart1.DataSource = "资材信息表" '设置绑定表
Chart1.SeriesList.Clear() '清除图表原来的图系
For Each c As Col In t2.Cols
    If c.Name = "库别" Then
        Series2 = Chart1.SeriesList.Add() '增加一个图系
        Series2.Text = c.Name '设置图系的标题
        Series2.X.DataField = "库别" 'X轴绑定到产品列
        Series2.Y.DataField = "金额" '设置Y轴的绑定列
    End If
Next
Chart1.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart1.LegendVisible = True '显示图列
Chart1.LegendCompass = CompassEnum.South '图列显示在南方(底端)


问题:此时X轴显示的是每条数据,需要显示A\B\C类共5类,即显示每类求和后的值,图表1、2同样问题。另图表是否能实现与上表筛选后的数据,同步更新(中间的总信息不变)
[此贴子已经被作者于2023/11/8 14:49:50编辑过]

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


加好友 发短信
等级:超级版主 帖子:111358 积分:566848 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/8 15:02:00 [只看该作者]

'-----------------------生成库存图表-------------------------------
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("资材信息表") '定义一个变量t引用数据表
Chart = e.Form.Controls("库存统计") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisX.ClearValueLabel
dim ps() as string = t.datatable.getvalues("备件分类",t.filter)
Series.Length = ps.length '设置图系的长度
For
 i As integer = 0 to ps.length - 1 '指定每个数据点的位置
    Series.X(i) = i 
'指定水平坐标
    Series.Y(i) = 
t.datatable.compute("sum(数量)",IIF(t.filter > "",t.filter & " and ","") & "
备件分类 = '" & ps(i) & "'"'指定垂直坐标
    Chart.AxisX.SetValueLabel(i, ps(i)'指定字符表示
Next
Chart.AxisX.AnnoWithLabels = 
True '启用字符标示
[此贴子已经被作者于2023/11/8 15:02:41编辑过]

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


加好友 发短信
等级:婴狐 帖子:11 积分:143 威望:0 精华:0 注册:2023/9/10 20:37:00
  发帖心情 Post By:2023/11/8 15:21:00 [只看该作者]

报错:无法将类型为“System.Collections.Generic.List`1[System.String]”的对象强制转换为类型“System.String[]”  图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:111358 积分:566848 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/8 15:32:00 [只看该作者]

dim ps() as string = t.datatable.getvalues("备件分类",t.filter)
Series.Length = ps.length '设置图系的长度
For
 i As integer = 0 to ps.length - 1 '指定每个数据点的位置

改为
dim ps as List(of string) = t.datatable.getvalues("备件分类",t.filter)
Series.Length = ps.count '设置图系的长度
For
 i As integer = 0 to ps.count  - 1 '指定每个数据点的位置

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


加好友 发短信
等级:婴狐 帖子:11 积分:143 威望:0 精华:0 注册:2023/9/10 20:37:00
  发帖心情 Post By:2023/11/8 15:51:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1699429067916.png
图片点击可在新窗口打开查看
还是报错啊,是不是应该传原件图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:111358 积分:566848 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/8 15:58:00 [只看该作者]

调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错

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


加好友 发短信
等级:婴狐 帖子:11 积分:143 威望:0 精华:0 注册:2023/9/10 20:37:00
  发帖心情 Post By:2023/11/8 16:29:00 [只看该作者]

'-----------------------生成库存图表-------------------------------
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("资材信息表") '定义一个变量t引用数据表
Chart = e.Form.Controls("库存统计") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisX.ClearValueLabel
MessageBox.Show(1)
Dim ps As List(Of String) = t.DataTable.getvalues("备件分类", t.filter)
MessageBox.Show(2)
Series.Length = ps.count '设置图系的长度
MessageBox.Show(3)
For i As Integer = 0 To ps.count - 1 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = t.DataTable.compute("sum(金额)", IIf(t.filter > "", t.filter & " and ", "") & "备件分类 = '" & ps(i) & "'") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i, ps(i)) '指定字符表示
Next
MessageBox.Show(4)
Chart.AxisX.AnnoWithLabels = True '启用字符标示

显示1、2后报错


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


加好友 发短信
等级:超级版主 帖子:111358 积分:566848 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/8 16:39:00 [只看该作者]

Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisX.ClearValueLabel
MessageBox.Show(1)
Dim ps As List(Of String) = t.DataTable.getvalues("备件分类", t.filter)
MessageBox.Show(2)
Series = Chart.SeriesList.Add()
Series.Length = ps.count '设置图系的长度
MessageBox.Show(3)
For i As Integer = 0 To ps.count - 1 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = t.DataTable.compute("sum(金额)", IIf(t.filter > "", t.filter & " and ", "") & "备件分类 = '" & ps(i) & "'") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i, ps(i)) '指定字符表示
Next
MessageBox.Show(4)
Chart.AxisX.AnnoWithLabels = True '启用字符标示

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


加好友 发短信
等级:婴狐 帖子:11 积分:143 威望:0 精华:0 注册:2023/9/10 20:37:00
  发帖心情 Post By:2023/11/8 19:59:00 [只看该作者]

图片点击可在新窗口打开查看多谢~,解决了

 回到顶部