这是帮助新增加的一节,恰好看到有用户提问,所以贴上来。
这种统计,帮助原来是有例子的,采用的是手工编写事件代码来完成,这里提供另一种方式,用按钮一次完成,二者各有优势,大家仔细体会。
一个经典的统计示例
假定有下图的成绩表:
此主题相关图片如下:2536.png
希望得到下图所示的统计表:
此主题相关图片如下:2537.png
这是一个比较经典的统计示例,需要灵活运用我们之前掌握的多种知识,但代码并不复杂:
Dim b As New SQLGroupTableBuilder("统计表1","成绩表")
b.Groups.AddDef("班级")
b.Totals.AddExp("人数","学号","",AggregateEnum.Count) '统计人数
Dim nms()
As
String =
{"语文","英语","数学","物理","化学"}
For
Each
nm As
String
In nms '利用表达式统计及格人数和优秀人数
b.Totals.Addexp(nm
& "_及格", "iif(" &
nm &
" >= 60, 1, 0)")
b.Totals.Addexp(nm & "_优秀", "iif(" &
nm &
" >= 90, 1, 0)")
Next
b.VerticalTotal = True
b.Build()
For
Each nm As
String
In nms '对生成的统计表增加表达式列,计算及格率和优秀率
DataTables("统计表1").DataCols.Add(nm & "_及格率",Gettype(Double),
nm &
"_及格/人数" )
Tables("统计表1").Cols(nm & "_及格率").Move(Tables("统计表1").Cols(nm & "_及格").Index + 1)
DataTables("统计表1").DataCols.Add(nm & "_优秀率",Gettype(Double),
nm &
"_优秀/人数" )
Tables("统计表1").Cols(nm & "_优秀率").Move(Tables("统计表1").Cols(nm & "_优秀").Index + 1)
DataTables("统计表1").DataCols(nm &
"_及格率").SetFormat("0.00%")
DataTables("统计表1").DataCols(nm & "_优秀率").SetFormat("0.00%")
Next
MainTable = Tables("统计表1")