在“成绩排名表”窗体中的“按期数和班级排名”按钮代码如下:
''e.Form.Controls("Label3").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) = "" Then
' Continue For
' End If
' Dim drs As List(Of DataRow) = CurrentTable.DataTable.Select("[月考期数] = '" & pm(i)(0) & "'And [班别] = " & pm(i)(1), 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
'Tables("成绩排名表_成绩排名表").Sort = "总分 DESC"
'CurrentTable.Redraw = True
'Time1 = Date.Now
''e.Form.Controls("Label3").text="耗时 " & (Time1-Time).TotalSeconds & " 秒"
e.Form.Controls("Label3").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) = "" Then
Continue For
End If
Dim drs As List(Of DataRow) = CurrentTable.DataTable.Select("[月考期数] = '" & pm(i)(0) & "'And [班别] = '" & pm(i)(1), 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
Tables("成绩排名表_成绩排名表").Sort = "总分 DESC"
CurrentTable.Redraw = True
Time1 = Date.Now
e.Form.Controls("Label3").text="耗时 " & (Time1-Time).TotalSeconds & " 秒"
可是在单击“确定”按钮时提示如图的错误。
此主题相关图片如下:捕获.jpg
这是怎么回事呢?谢谢!