加粗的一行,解决筛选问题。
Dim Chart As WinForm.Chart = e.Form.Controls("Chart1")
Dim dt As DataTable
Dim g As New GroupTableBuilder("统计表1", DataTables("下单"))
g.Groups.AddDef("材质")
g.Totals.AddDef("裂纹", AggregateEnum.Count)
g.Totals.AddDef("旧角",AggregateEnum.Count)
g.Totals.AddDef("起层",AggregateEnum.Count)
g.Totals.AddDef("不严",AggregateEnum.Count)
g.Totals.AddDef("尺差",AggregateEnum.Count)
g.Totals.AddDef("偏稍",AggregateEnum.Count)
g.Totals.AddDef("粘板",AggregateEnum.Count)
g.Totals.AddDef("其它",AggregateEnum.Count)
g.Filter = Tables("下单").Filter
dt = g.Build(True)
Chart.VisualEffect = True
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.ChartType = ChartTypeEnum.Bar '设置图表类型
Chart.Stacked = True
Chart.SeriesList2.Clear() '清除图表原来的图系
Dim nms() As String = {"裂纹","旧角","起层","不严","尺差","偏稍","粘板","其它"}
Dim vls(7) As Double
Dim Series As WinForm.ChartSeries '定义一个图系变量
For n As Integer = 0 To 7
Series = Chart.SeriesList.Add() '增加一个图系
Series.Length = dt.DataRows.Count '图系的数据点数等于表的行数
Series.Text = nms(n)
For i As Integer = 0 To dt.DataRows.Count - 1 '指定每个数据点的位置
Series.X(i) = i '指定水平坐标
Series.Y(i) = dt.DataRows(i)(nms(n)) '指定垂直坐标
vls(n) = vls(n) + dt.DataRows(i)(nms(n))
Next
Next
For n As Integer = 0 To 7
Series = Chart.SeriesList2.Add() '增加一个图系
Series.Length = dt.DataRows.Count '图系的数据点数等于表的行数
Series.Text = nms(n)
For i As Integer = 0 To dt.DataRows.Count - 1 '指定每个数据点的位置
Series.X(i) = i '指定水平坐标
Series.Y(i) = dt.DataRows(i)(nms(n)) / vls(n)
Next
Next
For r As Integer = 0 To dt.dataRows.Count - 1
Chart.AxisX.SetValueLabel(r, dt.dataRows(r)("材质")) '指定字符表示
Next
[此贴子已经被作者于2011-10-26 10:10:13编辑过]