以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]自定义分数段统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86091)

--  作者:方丈
--  发布时间:2016/6/10 12:42:00
--  [求助]自定义分数段统计
外部数据源,出现下面的错误提示,不知何故
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:代码.txt

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160610103611.png
图片点击可在新窗口打开查看


原帖地址:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=32395




--  作者:y2287958
--  发布时间:2016/6/10 18:06:00
--  
上例子
--  作者:方丈
--  发布时间:2016/6/10 20:47:00
--  
外部数据源是sql数据源,已在使用中,不方便外传,
外部数据有近三十万条,可能是查询数据量太多造成的,
其实我只需要统计已加载的数据,不需要统计后台全部数据,

代码如何改为 只统计 已加载的成绩的分数段?谢谢!





--  作者:方丈
--  发布时间:2016/6/10 20:48:00
--  

Dim SQL,s1,s2,s3 As String
Dim fsd As New List(of Double)
Dim t1 As Table =Tables("封面页")  \'注意更改表名称
Dim rs As List(of Row) = t1.GetCheckedRows()
Dim kms As List(of String)  =DataTables("封面页").GetUniqueValues("科目 > \'\'","科目")
s1 = " Un ion All Sel ect 班级,\'@\' As 科目,学生姓名, @ As 成绩 Fr om {学生成绩库}"

If rs.Count >0 Then
    For Each r1 As Row In rs
        If fsd.Contains(r1("分数段")) = False Then
            fsd.add(r1("分数段"))
        End If
    Next
    
    fsd.sort
    For Each s2 In kms
        SQL+ = s1.replace("@",s2)      \'合成标准数据库([语文,数学,英语,化学,物理]多列

合并为[成绩]一列),方便统计!
    Next
    SQL =SQL.substring(11)
    
    For n1 As Integer = 0 To fsd.count-1
        s1 = ",1,0)) As " &  fsd(n1)  & iif(n1 =0,"分以下","分及以上")
        Select Case n1
            Case  0
                s2 = ",Sum(iif(成绩 < " & fsd(n1)
            Case  fsd.count-1
                s2 = ",Sum(iif(成绩 >= " & fsd(n1)
            Case Else
                s2 = ",Sum(iif(成绩 >= " & fsd(n1) & " and 成绩 < " & fsd(n1+1)
        End Select
        s3+ =s2 & s1
    Next
    
    s1 = "Select 班级, 科目,Max(成绩) As 最高分,Min(成绩) As 最低分,Roun d(Avg(成绩),1) 

As 平均分"  & s3
    SQL =s1 & " Fr om(" & SQL & ") Gr oup b y 班级,科目"
    
Dim q As new QueryBuilder
q.C
q.TableName = "自定义分数阶统计"
q.SelectString = SQL
q.Build
MainTable = Tables("自定义分数阶统计")

End If

外部数据源是sql数据源,已在使用中,不方便外传,
外部数据有近三十万条,可能是查询数据量太多造成的,
其实我只需要统计已加载的数据,不需要统计后台全部数据,

代码如何改为 只统计 已加载的成绩的分数段?谢谢!

[此贴子已经被作者于2016/6/10 21:10:44编辑过]

--  作者:大红袍
--  发布时间:2016/6/10 23:02:00
--  

在红色地方写上你的条件,不会做,额外做个例子发上来。

 

s1 = "Select 班级, 科目,Max(成绩) As 最高分,Min(成绩) As 最低分,Roun d(Avg(成绩),1)  As 平均分"  & s3

SQL =s1 & " Fr om(" & SQL & ") where 条件 Group by 班级,科目"
[此贴子已经被作者于2016/6/10 23:02:24编辑过]

--  作者:方丈
--  发布时间:2016/6/11 8:55:00
--  
我是自定义用户管理,加载条件是根据用户角色判断,写在“确定”按钮里
--  作者:大红袍
--  发布时间:2016/6/11 14:14:00
--  
 那条件是什么?合成以后,合并到sql语句里面去。
--  作者:方丈
--  发布时间:2016/6/11 18:15:00
--  
已搞定