以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码应该如何修改  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=45714)

--  作者:aygp
--  发布时间:2014/2/9 17:46:00
--  代码应该如何修改
代码已经达到的效果:
   1、录入比赛成绩后,点击“取前八名”按钮后,\'成绩\'列将自动按高度排序,高度高的排前面,高度低的排后面。
   2、\'名次\'列将自动取前八名。给出 1、2、3、4、5、6、7、8 数字。
   3、第八名以后的行,即第九行(含第九行)以后的行全部过滤。
   4、出现二个第二名,就没有第三名。

存在的问题:
    如果给跳高项目按成绩排名次后,再给跳远项目按成绩排名次就会出现问题。也就是说只要在名次列中有数据,取前八名就不行。

请问“取前八名按键”代码应该如何修改?

图片点击可在新窗口打开查看此主题相关图片如下:截图08.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar



--  作者:lsy
--  发布时间:2014/2/9 18:28:00
--  

开发版的,爱莫能助。


--  作者:有点甜
--  发布时间:2014/2/9 19:22:00
--  
 只要弄之前清空名次值不就行了?

Tables("表A").sort="成绩 DESC"
DataTables("表A").ReplaceFor("名次", Nothing)
Dim mc As Integer=1
Dim count As Integer=IIF(Tables("表A").Rows.count-1<8,Tables("表A").Rows.count-1,7)
For i As Integer=0 To count
    If i>0 AndAlso Tables("表A").Rows(i)("成绩") <> Tables("表A").Rows(i-1)("成绩") Then
        mc=mc+1
    End If
    Tables("表A").Rows(i)("名次")=mc
Next
Tables("表A").Filter="名次 is not null"

--  作者:aygp
--  发布时间:2014/2/9 19:37:00
--  
上传商业版
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:按高度远度排序(商业版).rar


--  作者:aygp
--  发布时间:2014/2/9 20:44:00
--  
甜老师,名次值不能清空,所有比赛项目的名次都要保留下来。只有麻烦修改代码了,谢谢老师!
--  作者:有点甜
--  发布时间:2014/2/9 20:57:00
--  
 试试用这段代码看看行不行

Tables("表A").sort="成绩 DESC"
DataTables("表A").ReplaceFor("名次", Nothing, Tables("表A").Filter)
Dim mc As Integer=1
Dim count As Integer=IIF(Tables("表A").Rows.count-1<8,Tables("表A").Rows.count-1,7)
For i As Integer=0 To count
    If i>0 AndAlso Tables("表A").Rows(i)("成绩") <> Tables("表A").Rows(i-1)("成绩") Then
        mc=mc+1
    End If
    Tables("表A").Rows(i)("名次")=mc
Next
If Tables("表A").Filter > "" Then
    Tables("表A").Filter +=" and 名次 is not null"
Else
    Tables("表A").Filter ="名次 is not null"
End If

--  作者:y2287958
--  发布时间:2014/2/9 21:40:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:按高度远度排序(商业版).zip


--  作者:aygp
--  发布时间:2014/2/9 21:44:00
--  
测试通过。谢谢甜老师!