原文在 Foxtable编程 3.4.1.2.2.2.7 Select 原文如下,
例如在一个成绩表中,包括班级、姓名、总分、总分排名几列数据,希望按班级自动生成总分排名:
'获得所有班级名称,保存在集合中
Dim bjs As List(Of String) = DataTables("成绩表").GetUniqueValues("","班级")
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
以下是我写的,
Dim bjs As List(Of String)
bjs=DataTables("成绩表").GetUniqueValues("","班级")
For Each bj As String In bjs
Dim n As Integer
For Each dr As DataRow In DataTables("成绩表").Select("[班级] = " & bj, "总分 DESC")
If n > 0 AndAlso dr(n)("总分") = dr(n-1)("总分") Then
dr(n)("总分排名") = dr(n-1)("总分排名")
Else
dr(n)("总分排名") = n + 1
End If
Next
Next
执行后弹出对话框 ![](D:\Documents and=)