ASP名次排列函数
时间:2008-7-20 网友评论
条
【
大
中
小】
近日,朋友写一个关于成绩管理的系统,其中遇到一个小问题。如果按照SQLSERVER的ORDER 排序时,比如遇到两个100分,结果必然是名次不同的,但事实上,应该是并列第1名。于是,写了这个简单的函数,以备后用。欢迎批评!
严重感谢王军同学,我一直以为如果“100 80 80 70”中,70分就是第3名,80分并第二名的,今天才知道,原来70还是第4名,第三名空缺。主呀,请原谅我的无知吧,上学时从来没上过榜呀!再次谢谢!
用法:
getPlace(成绩字符串, 排名成绩, 分隔符)
返回结果为 lng 表示名次
例如 getPlace("30|72|84|100|100|68|72|49", "72", "|")
返回值为 第4名
Function getPlace(aSrc, sTra, sPli)
Dim j, i
Dim aTmp, temp, lPl
aTmp = Split(aSrc, sPli)
lPl = 1
For j = 0 To UBound(aTmp)
For i = j + 1 To UBound(aTmp)
If aTmp(j) < aTmp(i) Then
temp = aTmp(j)
aTmp(j) = aTmp(i)
aTmp(i) = temp
temp = Empty
End If
Next
Next
For i = 0 To UBound(aTmp)
If aTmp(i) = CLng(sTra) Then
getPlace = lPl
Exit For
Else
lPl = lPl + 1
End If
Next
End Function