统计的代码如下,其中颜色标记的“入学年份”原来是“学年”,更改后统计的结果正确率提高,但总有一科或两科的结果是错的!但出错的科目并不是固定的!(最后一科“科学”好像全错)
此主题相关图片如下:结果1.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2016-8/2016860144586184.png)
此主题相关图片如下:结果2.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2016-8/20168523465533294.png)
For Each dr As DataRow In DataTables("班级考情分析").Select("")
Dim dt As Table = Tables("成绩记录")
If dr("科目") = "总分" Then
dr("分布_40以下") = dt.Compute("Count(姓名)", dr("科目") & " < 160")
dr("分布_40至60") = dt.Compute("Count(姓名)", dr("科目") & " >= 160 And " & dr("科目") & " < 240" )
dr("分布_60分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 240 And " & dr("科目") & " < 280" )
dr("分布_70分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 280 And " & dr("科目") & " < 320" )
dr("分布_80分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 320 And " & dr("科目") & " < 360" )
dr("分布_90分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 360 And " & dr("科目") & " < 400" )
Dim filter1 As String = "1=2"
Dim filter2 As String = "1=2"
Dim filter3 As String = "1=2"
For Each cdr As DataRow In DataTables("分数线").DataRows
filter1 = filter1 & " or 入学年份 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " > " & cdr("优秀分数")*4
filter2 = filter2 & " or 入学年份 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " > " & cdr("及格分数")*4
filter3 = filter3 & " or 入学年份 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " < " & cdr("差生分数")*4
Next
msgbox(filter1) '临时检查用代码,用于查看优秀人数的判断分数公式有没有出错。
dr("分布_满分") = dt.Compute("Count(姓名)", dr("科目") & " >= 400" )
dr("优秀人数") = dt.Compute("Count(姓名)", filter1)
dr("及格人数") = dt.Compute("Count(姓名)", filter2)
dr("差生人数") = dt.Compute("Count(姓名)", filter3)
Else
dr("分布_40以下") = dt.Compute("Count(姓名)", dr("科目") & " < 40")
dr("分布_40至60") = dt.Compute("Count(姓名)", dr("科目") & " >= 40 And " & dr("科目") & " < 60" )
dr("分布_60分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 60 And " & dr("科目") & " < 70" )
dr("分布_70分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 70 And " & dr("科目") & " < 80" )
dr("分布_80分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 80 And " & dr("科目") & " < 90" )
dr("分布_90分段") = dt.Compute("Count(姓名)", dr("科目") & " >= 90 And " & dr("科目") & " < 100" )
Dim filter1 As String = "1=2"
Dim filter2 As String = "1=2"
Dim filter3 As String = "1=2"
For Each cdr As DataRow In DataTables("分数线").DataRows
filter1 = filter1 & " or 入学年份 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " > " & cdr("优秀分数")
filter2 = filter2 & " or 入学年份 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " > " & cdr("及格分数")
filter3 = filter3 & " or 入学年份 = " & Date.Today.Year - cdr("年级") + 1 & " and " & dr("科目") & " < " & cdr("差生分数")
Next
dr("分布_满分") = dt.Compute("Count(姓名)", dr("科目") & " >= 100" )
dr("优秀人数") = dt.Compute("Count(姓名)", filter1)
dr("及格人数") = dt.Compute("Count(姓名)", filter2)
dr("差生人数") = dt.Compute("Count(姓名)", filter3)
End If
dr("最高分") = dt.Compute("Max(" & dr("科目") & ")")
dr("最低分") = dt.Compute("Min(" & dr("科目") & ")")
dr("总分") = dt.Compute("Sum(" & dr("科目") & ")")
dr("平均分") = dt.Compute("Avg(" & dr("科目") & ")")
Next
通过在总分统计部分加入 msgbox(filter1)检查,输出以下结果:
![dvubb 图片点击可在新窗口打开查看](skins/default/filetype/png.gif)
此主题相关图片如下:运行结果.png
[此贴子已经被作者于2016/8/6 0:15:08编辑过]