Foxtable(狐表)用户栏目专家坐堂 → [求助]帮助文档 Select 第三列子问题


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

主题:[求助]帮助文档 Select 第三列子问题

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


加好友 发短信
等级:婴狐 帖子:36 积分:296 威望:0 精华:0 注册:2011/8/6 15:00:00
[求助]帮助文档 Select 第三列子问题  发帖心情 Post By:2011/8/28 22:16:00 [只看该作者]

'获得所有班级名称,保存在集合中
Dim
bjs As List(Of String) = DataTables("成绩表").GetUniqueValues("","班级")
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

 

代码如上,我想这代码有问题,比如例子里面,如果有两个  400 分的人的话,那 因为 for 循环会自动加 1的关系

 

导致  这两人的排名一样,如  两个都是 排名  20  ,那当第一个是 20的时候 for 已经自动加 1 n 的值是21了,

 

当给第二个 排名的时候   FOR 的值已经是 22 了,也就是 会 缺少排名 21!!

 

我修改了下代码,如下:

 

Dim bjs As List(Of String) = DataTables("成绩表").GetUniqueValues("","班级")
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 '遍历所有行
        output.show(n)
        If n=0 Then
            drs(n)("总分排名") = 1
        ElseIf n>0 AndAlso drs(n)("总分") = drs(n-1)("总分") Then '如果总分和上一行相同
            drs(n)("总分排名") = drs(n-1)("总分排名") '则排名等于上一行
        Else
            drs(n)("总分排名") = drs(n-1)("总分排名") + 1 '设置排名
        End If
    Next
Next


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


加好友 发短信
等级:幼狐 帖子:113 积分:731 威望:0 精华:1 注册:2011/8/16 14:13:00
  发帖心情 Post By:2011/8/28 22:50:00 [只看该作者]

沒問題!好比雙冠軍就沒亞軍了

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


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By:2011/8/28 23:00:00 [只看该作者]

你改的对,恭喜了。图片点击可在新窗口打开查看

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/8/29 10:29:00 [只看该作者]

帮助中的也是对的,楼主的也没有错,看是如果要求的。

 

楼主的优点是没有漏号,是多少名就是多少名,但是如果相同的成绩的数量多了的话,那么如果有100人排名,可能最后一名也会排到50名以内的。


 回到顶部