以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]成绩排名问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100689) |
||||
-- 作者:cqdjr -- 发布时间:2017/5/16 15:16:00 -- [求助]成绩排名问题 系统里面自带有一个“成绩排名”,它是分班级以总分和各科排名,现在我想要分类:以不同学期、不同年级、不同班级的人以总分和分科分别排名,请问大侠们,该如何才能实现呢?急,求大神指点一下,万分感谢!
|
||||
-- 作者:有点色 -- 发布时间:2017/5/16 17:51:00 -- Tables("成绩表").StopRedraw Dim bjs As List(Of String()) = DataTables("成绩表").GetValues("学期|年级|班级","[班级] Is Not NULL") Dim Count As Integer Dim ColNames() As String = {"语文","数学","英语","化学","物理","总分"} Dim TotalName As String For Each ColName As String In ColNames For Each ary() As String In bjs Dim drs As List(Of DataRow) = DataTables("成绩表").Select("学期 = \'" & ary(0) & "\' and 年级 = \'" & ary(1) & "\' and 班级 = \'" & ary(2) & "\'", ColName & " DESC") Count = 0 TotalName = ColName & "排名" For n As Integer = 0 To drs.Count - 1 Count = Count + 1 If n > 0 AndAlso drs(n)(ColName ) = drs(n-1)(ColName) Then drs(n)(TotalName ) = drs(n-1)(TotalName ) Else drs(n)(TotalName ) = Count End If Next Next Next Tables("成绩表").Sort = "总分 DESC" Tables("成绩表").ResumeRedraw |
||||
-- 作者:cqdjr -- 发布时间:2017/5/16 19:57:00 -- 高人啊,绝对的大神,感谢版主,谢谢,辛苦您了。 |
||||
-- 作者:cqdjr -- 发布时间:2017/5/16 20:04:00 -- 帮助文件里面有一个求及格率和优生率的例子代码,但生成出来的是临时统计表,能不能实现生成永久的统计表呢? |
||||
-- 作者:有点蓝 -- 发布时间:2017/5/16 20:44:00 -- 把代码中临时统计表的名称改为你永久的统计表名称就行 [此贴子已经被作者于2017/5/16 20:43:58编辑过]
|
||||
-- 作者:cqdjr -- 发布时间:2017/5/16 21:54:00 -- 以下是引用有点蓝在2017/5/16 20:44:00的发言:
把代码中临时统计表的名称改为你永久的统计表名称就行 Dim b As New SQLGroupTableBuilder("统计及格优秀2014","成绩2014") b.C b.Groups.AddDef("班级") b.Totals.AddExp("人数","考号","",AggregateEnum.Count) \'统计人数 Dim nms() As String = {"语文","数学","英语","政治","历史","地理","物理","化学","生物"} For Each nm As String In nms \'利用表达式统计及格人数和优秀人数 b.Totals.Addexp(nm & "_及格", " case when " & nm & " >= 60 Then 1 Else 0 End ") b.Totals.Addexp(nm & "_优秀", " case when " & nm & " >= 90 Then 1 Else 0 End") Next b.VerticalTotal = True b.Build() For Each nm As String In nms \'对生成的统计表增加表达式列,计算及格率和优秀率 DataTables("统计及格优秀2014").DataCols.Add(nm & "_及格率",Gettype(Double), nm & "_及格/人数" ) Tables("统计及格优秀2014").Cols(nm & "_及格率").Move(Tables("统计及格优秀2014").Cols(nm & "_及格").Index + 1) DataTables("统计及格优秀2014").DataCols.Add(nm & "_优秀率",Gettype(Double), nm & "_优秀/人数" ) Tables("统计及格优秀2014").Cols(nm & "_优秀率").Move(Tables("统计及格优秀2014").Cols(nm & "_优秀").Index + 1) DataTables("统计及格优秀2014").DataCols(nm & "_及格率").SetFormat("0.00%") DataTables("统计及格优秀2014").DataCols(nm & "_优秀率").SetFormat("0.00%") Next MainTable = Tables("统计及格优秀2014") 蓝版,帮我看一下,怎么改啊,我是小白,不懂啊,谢谢。
|
||||
-- 作者:有点蓝 -- 发布时间:2017/5/16 22:32:00 -- 这种方式生成统计表后把数据填充到另外的永久的统计表中 或者直接使用代码生成统计数据
|