我需要自动识别,实际当中可能不止4个,也可能2个或3个。代码我写了,但不通。请您给看看。多谢啦。
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("统计表") '定义一个变量t引用数据表
Chart =Forms("displayinchart").Controls("Chart1")' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
cmd.CommandText ="Se lect DISTINCT 第四列,第五列,第六列,第七列,第八列,第九列 from {统计表} where val(第四列)=i"
dt = cmd.ExecuteReader
Dim o = Forms("displayinchart").Controls("Chart1").TabPages.add("Garray" & i, "Garray" & i)
Dim cht = Forms("displayinchart").CreateControl("chart" & i, ControlTypeEnum.Chart)
cht.Dock = 5
o.AddControl(cht)
Chart =Forms("displayinchart").Controls("Chart"& i) '引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
For Each c As Col In t.Cols
If c.Name <> "第五列" Then
Series = Chart.SeriesList.Add() '增加一个图系
Series.Text = c.Name '设置图系的标题
Series.Length = t.Rows.Count '设置图系的长度
For r As Integer =0 To t.Rows.Count-1 '指定每个数据点的位置
Dim sta As Row = Tables("统计表").Rows(i)
Series.X(r) = r
Series.Y(r) = t.Rows(r)(c.Name)
Next
End If
Next
Next
For r As Integer = 0 To t.Rows.Count - 1
Chart.AxisX.SetValueLabel(r, t.Rows(r)("第五列")) '指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass= CompassEnum.South '图列显示在南方(底端)