我用以下代码对成绩按班级排名,但这种排名不能区别不同年级的同一班级,我需要只针对同一年级同一班级进行排名(比如只针对1年级1班排名,2年级1班另外排名)
e.Form.Controls("Label1").text="请稍等,正在计时..."
Dim timestart,timeend As Date
timestart=Date.now
Dim pm As List(Of String) = CurrentTable.DataTable.GetValues("班级")
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), ColName & " DESC")
pmc = 0
TotalName = ColName.SubString(0,2) & "_排名"
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 '刷新表
timeend=Date.now
e.Form.Controls("Label1").text="耗时" & (timeend-timestart).TotalSeconds & "秒"
Messagebox.Show("统计完毕!")
drs(n)(TotalName ) = pmc
End If
Next
Next
Next
[此贴子已经被作者于2015-1-14 15:03:42编辑过]