以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  一个经典的统计示例  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90288)

--  作者:狐狸爸爸
--  发布时间:2016/9/9 9:50:00
--  一个经典的统计示例
这是帮助新增加的一节,恰好看到有用户提问,所以贴上来。

这种统计,帮助原来是有例子的,采用的是手工编写事件代码来完成,这里提供另一种方式,用按钮一次完成,二者各有优势,大家仔细体会。

一个经典的统计示例


假定有下图的成绩表:



图片点击可在新窗口打开查看此主题相关图片如下: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")










--  作者:fzpic
--  发布时间:2016/10/5 11:17:00
--  
学习。
--  作者:zhy400137
--  发布时间:2016/10/5 14:18:00
--  
学习
--  作者:77611471
--  发布时间:2016/10/5 15:35:00
--  

能上传看一下吗?这些代码要写在那个地方?

 


--  作者:狐狸爸爸
--  发布时间:2016/10/5 21:59:00
--  
做成一个按钮,写在按钮的Click事件中。
如果不知道写在哪里,建议看视频: