Foxtable(狐表)用户栏目专家坐堂 → 咨询个自动排名的问题,是不是表达式列不能排名?


  共有8316人关注过本帖树形打印复制链接

主题:咨询个自动排名的问题,是不是表达式列不能排名?

帅哥,在线噢!
xuezxz
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:4529 威望:0 精华:0 注册:2012/3/7 23:19:00
咨询个自动排名的问题,是不是表达式列不能排名?  发帖心情 Post By:2012/7/11 11:36:00 [只看该作者]

参考帮助中的排名例子,发现如果是参与计算的列是表达式列的话,排名的结果都是1,有没有什么办法可以让表达式列的结果可以排名呢?

 回到顶部
帅哥,在线噢!
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/11 11:38:00 [只看该作者]

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


 回到顶部
帅哥,在线噢!
xuezxz
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:4529 威望:0 精华:0 注册:2012/3/7 23:19:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
muhua
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2012/7/11 14:26:00 [只看该作者]

用户已被锁定

 回到顶部
帅哥,在线噢!
xuezxz
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:4529 威望:0 精华:0 注册:2012/3/7 23:19:00
  发帖心情 Post By:2012/7/11 16:05:00 [只看该作者]

没说清,是总分那一列怎么没有从高到底排下来?

 回到顶部
帅哥,在线噢!
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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"


 回到顶部