Foxtable(狐表)用户栏目专家坐堂 → 分组排序,代码如何实现


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

主题:分组排序,代码如何实现

帅哥哟,离线,有人找我吗?
jayson
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:59 积分:560 威望:0 精华:0 注册:2017/8/4 9:53:00
分组排序,代码如何实现  发帖心情 Post By:2017/8/17 15:03:00 [只看该作者]

分组排序,代码如何实现

下面的实例,如何在不同的产品内部,根据销量,给排序

 

产品 部门 销量 排序
PG01 BM01 300 1
PG01 BM02 200 2
PG01 BM03 100 3
PG02 BM01 500 1
PG02 BM02 400 2
PG02 BM03 300 3
PG02 BM04 200 4
PG02 BM05 100 5


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/17 15:16:00 [只看该作者]

Tables("表A").Sort = "产品,销量 desc"


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


加好友 发短信
等级:婴狐 帖子:59 积分:560 威望:0 精华:0 注册:2017/8/4 9:53:00
  发帖心情 Post By:2017/8/17 15:34:00 [只看该作者]

不好意思,我没说清楚

我想表达的意思是,怎么在‘’排序‘’这列,实现 对应的排名(现在是我手工写的)

 

产品 部门 销量 排序
PG01 BM01 300 1
PG01 BM02 200 2
PG01 BM03 100 3
PG02 BM01 500 1
PG02 BM02 400 2
PG02 BM03 300 3
PG02 BM04 200 4
PG02 BM05 100 5


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/17 15:53:00 [只看该作者]

'获得所有班级名称,保存在集合中
Dim bjs As List(Of String) = DataTables("表A").GetValues("产品")
For Each bj As String In bjs
    '获得该班级的全部行,按总分降序排序
    Dim drs As List(Of DataRow) = DataTables("表A").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
[此贴子已经被作者于2017/8/17 15:53:40编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/17 15:53:00 [只看该作者]


 回到顶部