以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  咨询个自动排名的问题,是不是表达式列不能排名?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=21400)

--  作者:xuezxz
--  发布时间:2012/7/11 11:36:00
--  咨询个自动排名的问题,是不是表达式列不能排名?
参考帮助中的排名例子,发现如果是参与计算的列是表达式列的话,排名的结果都是1,有没有什么办法可以让表达式列的结果可以排名呢?
--  作者:狐狸爸爸
--  发布时间:2012/7/11 11:38:00
--  

没有这个道理,纸上不谈兵,做个简单的例子发上来说话


--  作者:xuezxz
--  发布时间:2012/7/11 13:59:00
--  

嘿嘿,没有这个道理就好,代码按下面的改的排名是可以了,总分没排序又是什么问题?

 

 Dim drs As List(Of DataRow) = DataTables("表A").Select("", "总分 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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目19.table


--  作者:xuezxz
--  发布时间:2012/7/11 16:05:00
--  
没说清,是总分那一列怎么没有从高到底排下来?
--  作者:狐狸爸爸
--  发布时间:2012/7/11 16:12:00
--  

你的代码只是排名,不是排序,你要同事排名和排序:

 

Dim drs As List(Of DataRow) = DataTables("表A").Select("", "总分 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
Tables("表A").sort = "总分 Desc"