排名代码,提示:找不到“初中地理”,为什么会有这个提醒呢,报考学科 列中有初中地理。
Tables("成绩册").StopRedraw
Dim bjs As List(Of String) = DataTables("成绩册").GetValues("报考学科")
For Each bj As String In bjs
'获得该班级的全部行,按总分降序排序
Dim drs As List(Of DataRow) = DataTables("成绩册").Select("[报考学科] = " & bj, "总成绩 DESC")
For n As Integer = 0 To drs.Count - 1 '遍历所有行
If n > 0 AndAlso drs(n)("总成绩") = drs(n-1)("总成绩") Then '如果总分和上一行相同
drs(n)("总排名") = drs(n-1)("总排名") '则排名等于上一行
Else
drs(n)("总排名") = n + 1 '设置排名
End If
Next
Next
Tables("成绩册").Sort = "总成绩 DESC"
Tables("成绩册").ResumeRedraw
————————————————————————————————————————————————————————————————
用这个代码,可以实现 我想要的功能,但有一个问题,如果我修改笔试排名后,要先删除是否面试列的内容,他不会自动刷新,可能是错的。
If e.DataCol.Name = "报考学科" Or e.DataCol.Name = "笔试排名" Then '如果内容发生变动的是品名列
If e.NewValue Is Nothing Then '如果新值是空白,也就是品名列的内容为空
e.DataRow("是否面试") = Nothing '那么清空此行单价列的内容
Else
Dim dr As DataRow
'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
dr = DataTables("名额").Find("[报考学科] = '" & e.NewValue & "'")
If dr IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
If e.DataRow("笔试排名") <= dr("面试名额") Then
e.DataRow("是否面试") ="面试"
End If
End If
End If
End If
[此贴子已经被作者于2020/6/16 22:38:57编辑过]