以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  成绩单元格为空时计算出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164909)

--  作者:nxdx112
--  发布时间:2021/5/8 14:28:00
--  成绩单元格为空时计算出错
成绩单元格为空时计算出错,必须输入数据或输入0,如何个别学生不输入也能计算其他人的成绩
--  作者:有点蓝
--  发布时间:2021/5/8 14:34:00
--  
怎么做的计算?写了什么代码?
--  作者:nxdx112
--  发布时间:2021/5/8 14:48:00
--  
e.Form.Controls("Label1").text="排名中,请稍候..."
Dim Time,Time1 As Date
Time = Date.now
Application.Doevents
DataTables("成绩排名").DataRows.Clear()
Dim f As New Filler
f.SourceTable = DataTables("学生成绩")
f.SourceCols = "名称,年级,班级,姓名,语文,数学,英语,物理,化学,政治,历史,地理,生物"
f.DataTable = DataTables("成绩排名")
f.DataCols = "名称,年级,班级,姓名,语文,数学,英语,物理,化学,政治,历史,地理,生物"
f.ExcludeExistValue = True
f.ExcludeNullValue = True
f.Fill

Dim pm As List(Of String()) = CurrentTable.DataTable.GetUniqueValues("","名称","年级","班级")
Dim pmc As Integer
Dim ColNames() As String = {"语文","数学","英语","化学","物理","政治","历史","地理","生物","总分"}
Dim TotalName As String
CurrentTable.Redraw = False
For Each ColName As String In ColNames
    For i As Integer = 0 To pm.Count -1
        If pm(i)(0) = "" Then
            Continue For
        End If
        Dim drs As List(Of DataRow) = CurrentTable.DataTable.Select("[名称] = \'" & pm(i)(0) & "\'And [年级] = \'" & pm(i)(1) & "\'And [班级] = " & pm(i)(2), ColName & " DESC")
        
        pmc = 0
        TotalName = ColName & "排名"
        For n As Integer = 0 To drs.Count - 1
            pmc = pmc +1
            If n > 0 AndAlso drs(n)(ColName ) = drs(n-1)(ColName) Then
                drs(n)(TotalName ) = drs(n-1)(TotalName )
            Else
                drs(n)(TotalName ) = pmc
            End If
        Next
    Next
Next

CurrentTable.Redraw = True
Tables("成绩排名").Sort = "名称,年级,班级,总分排名"
Time1 = Date.Now
e.Form.Controls("Label1").text="耗时 " & (Time1-Time).TotalSeconds & " 秒"
Messagebox.Show("按班级内排名完成!请查看!")
[此贴子已经被作者于2021/5/8 14:50:03编辑过]

--  作者:有点蓝
--  发布时间:2021/5/8 14:57:00
--  
        Dim drs As List(Of DataRow) = CurrentTable.DataTable.Select(ColName & " is not null and [名称] = \'" & pm(i)(0) & "\'And [年级] = \'" & pm(i)(1) & "\'And [班级] = " & pm(i)(2), ColName & " DESC")
--  作者:hbfnmxb
--  发布时间:2021/5/8 15:29:00
--  
留个印。收藏备用!