以下是引用有点甜在2018/9/16 13:40:00的发言:
''图表1
'生成各单位人数临时表
Dim b As New GroupTableBuilder("人数统计表1",DataTables("person"))
Dim t As DataTable
b.Groups.AddDef("organName","单位")
b.Totals.AddDef("organName",AggregateEnum.Count,"人数")
'b1.FromServer = True
t=b.Build() '生成统计表
''增加标记列 这个是为了X轴单位按照顺序排列,发现,名称是顺序排列了,数字确对不上
t.DataCols.Add("标记", Gettype(String)) ''增加标记列
For i As Integer = t.DataRows.count-1 To 0 Step -1
r("单位")=r("单位").Replace(" ","")
Dim dr2 As DataRow
dr2 = DataTables("organList").Find("[organName] = '" & r("单位") & "'" ) '否则在单位表查找同名的单位行,将找到的行赋值给变量dr
If dr2 IsNot Nothing Then '如果找到了同名的单位行,也就是dr不是Nothing
If dr2("fuZhu").length < 6 Then
r("标记")= dr2("fuZhu")
End If
r("人数") = t.Compute("sum(人数)", "标记 like '" & dr2("fuZhu") & "%'")
End If
Next
Tables("人数统计表1").Sort="标记"
t.DeleteFor("标记 is null")
老师 ,目前只有一个问题: 统计表和统计图对不上,统计图 的X轴的名称和它的数据不一致,请您指导一下
1、
此主题相关图片如下:1.png
2、
此主题相关图片如下:2.png
标记列代码:
''增加标记列
t.DataCols.Add("标记", Gettype(String)) ''增加标记列
For Each r As DataRow In t.DataRows ''对于表中的每一行
r("单位")=r("单位").Replace(" ","")
Dim dr2 As DataRow
dr2 = DataTables("organList").Find("[organName] = '" & r("单位") & "'" ) '否则在单位表查找同名的单位行,将找到的行赋值给变量dr
If dr2 IsNot Nothing Then '如果找到了同名的单位行,也就是dr不是Nothing
r("标记")= dr2("fuZhu")
End If
Next
For Each r As DataRow In t.DataRows ''对于表中的每一行
If r("标记").length = 6 Then
r("人数") = t.Compute("sum(人数)", "标记 like '" & r("标记") & "%'")
End If
Next
Tables("人数统计表1").Sort="标记"
t.DeleteFor("len(标记) = 9 ")
图表代码:
''生成统计图
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart= e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = Tables("人数统计表1").Rows.Count '设置图系的长度
For i As Integer = 0 To Tables("人数统计表1").Rows.Count- 1 '指定每个数据点的位置
Series.X(i) = i '指定水平坐标
Series.Y(i) = t.DataRows(i)("人数") '指定垂直坐标
Chart.AxisX.SetValueLabel(i, Tables("人数统计表1").Rows(i)("单位")) '指定字符表示
Next
Chart.AxisX.AnnoWithLabels = True '启用字符标示
已解决
[此贴子已经被作者于2018/9/16 14:45:20编辑过]