以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  成绩排名  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=126627)

--  作者:lfz123
--  发布时间:2018/10/25 15:02:00
--  成绩排名
成绩排名的代码如下:
If MainTable.name = "排名" Then
    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")
        MessageBox.Show(1)
        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
End If

报错如下:
.NET Framework 版本:2.0.50727.5420
Foxtable 版本:2018.10.9.1
错误所在事件:项目,MainTableChanged
详细错误信息:
语法错误:“=”运算符后缺少操作数。


图片点击可在新窗口打开查看此主题相关图片如下:表结构.png
图片点击可在新窗口打开查看




[此贴子已经被作者于2018/10/25 15:07:28编辑过]

--  作者:有点蓝
--  发布时间:2018/10/25 15:26:00
--  
Dim drs As List(Of DataRow) = DataTables("排名").Select("[班级] = \'" & bj & "\'", "语文_分数 DESC")


--  作者:lfz123
--  发布时间:2018/10/25 16:30:00
--  成绩排名结果有错误
排名不是想要的结果

图片点击可在新窗口打开查看此主题相关图片如下:结果出错.png
图片点击可在新窗口打开查看
代码如下:
If MainTable.name = "排名" Then \'语文成绩排名
    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
End If



--  作者:有点蓝
--  发布时间:2018/10/25 16:37:00
--  
Dim idx As Integer = 1
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)("语文_排名") = idx \'设置排名
        idx = idx+1
    End If
Next