Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助]图表问题

1楼
Xmihu 发表于: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楼
有点蓝 发表于: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编辑过]
3楼
Xmihu 发表于:2023/11/8 15:21:00
报错:无法将类型为“System.Collections.Generic.List`1[System.String]”的对象强制转换为类型“System.String[]”  图片点击可在新窗口打开查看
4楼
有点蓝 发表于: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 '指定每个数据点的位置
5楼
Xmihu 发表于:2023/11/8 15:51:00

图片点击可在新窗口打开查看此主题相关图片如下:1699429067916.png
图片点击可在新窗口打开查看
还是报错啊,是不是应该传原件图片点击可在新窗口打开查看
6楼
有点蓝 发表于:2023/11/8 15:58:00
调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错
7楼
Xmihu 发表于: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楼
有点蓝 发表于: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 '启用字符标示
9楼
Xmihu 发表于:2023/11/8 19:59:00
图片点击可在新窗口打开查看多谢~,解决了
共9 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .07031 s, 2 queries.