日期:2014-05-17  浏览次数:20963 次

成绩排序名次问题?
我想实现以下效果:
姓名     总分
张三     610
李四     610
王二     610
赵五     600

那么排名就是
姓名     总分     排名
张三     610         1
李四     610         1
王二     610         1
赵五     600         4

下面是我写的代码:
<%
Dim   Rs
dim   i   '定义名次变量
dim   tem
i=0
tem=1
Set   Rs   =   Conn.Execute( "Select   Top   120   *   From   scores   Where   grade=8   Order   By   zf   Desc ")
Do   While   Not   Rs.EOF
if   tem <> rs( "zf ")   then   i=i+1:tem=rs( "zf ")
%>

<table   cellspacing= "1 "   cellpadding= "0 "   width= "750 "   bgcolor= "gainsboro "   border= "0 "   align= "center ">
<tbody>
                            <tr   bgcolor= "#FFFFCC "   height= "20 "   onMouseOver=this.style.backgroundColor= "lime "   onMouseOut=this.style.backgroundColor= "#FFFFCC ">
                                      <td   width= "48 ">  
                              <div   align= "center "   class= "STYLE2 "> <%=rs( "zf ")%> </div>                                 </td>
<td   width= "46 ">  
                                <div   align= "center "   class= "STYLE2 "> <%=i   %> </div>                                 </td>
        </tr>
</table>  
 
<%
    Rs.MoveNext
Loop
Rs.Close
Set   Rs   =   Nothing
%>
但以上代码出来的却是以下效果:
姓名     总分
张三     610
李四     610
王二     610
赵五     600

那么排名就是
姓名     总分     排名
张三     610         1
李四     610         1
王二     610         1
赵五     600         2

哪位高手能帮我实现第一种效果,谢!!!!!!!!    


------解决方案--------------------
if tem <> cint(rs( "zf ")) then i=i+1:tem=cint(rs( "zf "))
------解决方案--------------------
定义一个参考变量,记录相同成绩的人数,然后在总名次变量中减去这个变量的值。

<%
Dim Rs
dim i '定义名次变量
dim j '参考值
dim tem
i=0
j=0
tem=1
Set Rs = Conn.Execute( "Select Top 120 * From scores Where grade=8 Order By zf Desc ")
Do While Not Rs.EOF
if tem <> rs( &q