以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  分组排序,代码如何实现  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=105349)

--  作者:jayson
--  发布时间: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


--  作者:有点甜
--  发布时间:2017/8/17 15:16:00
--  

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


--  作者:jayson
--  发布时间: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


--  作者:有点甜
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间:2017/8/17 15:53:00
--  

http://www.foxtable.com/webhelp/scr/2382.htm