以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  排名次问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=41815)

--  作者:aygp
--  发布时间:2013/10/28 13:05:00
--  排名次问题
需要达到的效果:
   1、录入比赛成绩后,点击“取前八名”按钮后,\'成绩\'列将自动按时间长短排序,时间短的排前面,时间长的排后面。
   2、\'名次\'列将自动取前八名。给出 1、2、3、4、5、6、7、8 数字。
   3、第八名以后的行,即第九行(含第九行)以后的行全部过滤不可见。
请问“按键”代码如何写?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:排名次.rar


--  作者:狐狸爸爸
--  发布时间:2013/10/28 13:11:00
--  

呵呵,好短的代码啊:

 

Dim dr As DataRow = DataTables("表A").Find("","成绩",8)
Tables("表A").Filter = "成绩 < \'" & dr("成绩") & "\'"

图片点击可在新窗口打开查看


--  作者:yan2006l
--  发布时间:2013/10/28 13:22:00
--  
以下是引用狐狸爸爸在2013-10-28 13:11:00的发言:

呵呵,好短的代码啊:

 

Dim dr As DataRow = DataTables("表A").Find("","成绩",8)
Tables("表A").Filter = "成绩 < \'" & dr("成绩") & "\'"

图片点击可在新窗口打开查看

可是哪来的“8”?


--  作者:aygp
--  发布时间:2013/10/28 13:33:00
--  
狐爸:测试发现名次:1、2、3、4、5、6、7、8 数字没有自动生成,请帮忙完善。谢谢了!
--  作者:aygp
--  发布时间:2013/10/28 13:37:00
--  
如果名次相同,还要考虑名次并列问题,如二个第三名,就没有第四名。
--  作者:狐狸爸爸
--  发布时间:2013/10/28 14:13:00
--  

Dim dr As DataRow = DataTables("表A").Find("","成绩",8)
Tables("表A").Filter = "成绩 < \'" & dr("成绩") & "\'"
Tables("表A").Sort = "成绩"

For i As integer = 0 To Tables(“表A”).Rows.Count - 1

   Tables(“表A”).Rows(i)("名次") = i + 1

Next


--  作者:Bin
--  发布时间:2013/10/28 14:16:00
--  

Dim mc As Integer=1
For i As Integer=0 To Tables("表A").Rows.count-1
    If i>0 AndAlso Tables("表A").Rows(i)("成绩") <> Tables("表A").Rows(i-1)("成绩") Then
        mc=mc+1
    End If
    If mc>8 Then
        Exit For
    End If
    Tables("表A").Rows(i)("名次")=mc
Next

--  作者:lsy
--  发布时间:2013/10/28 15:17:00
--  

楼主的排名条件,不公平啦:

三个第八名,怎么取舍?


--  作者:aygp
--  发布时间:2013/10/28 16:22:00
--  
图片点击可在新窗口打开查看
--  作者:aygp
--  发布时间:2013/10/28 16:32:00
--  
现在比赛是这样规定的:如果名次相同,就并列,如二个第三名,就没有第四名。 经测试并列问题还没有解决,请狐爸和Bib老师帮忙解决。谢谢了!