注册 登录
编程论坛 ASP技术论坛

菜鸟的asp问题,请大家帮忙

greatbin 发布于 2008-05-09 08:45, 829 次点击
源码如下:
<table border="1" cellpadding="3" cellspacing="0" style="border-collapse: collapse" width="98%" id="AutoNumber3" height="52">
<tr>
        <td align=left  width="100%" ><B>单位部门</B></td>

</tr>
    <%set rstopdep=server.createobject("adodb.recordset")
    sqltopdep="select top 5 * from "& db_EC_Dep_Table &" where depnumber>=0 order by depnumber desc"
    rstopdep.open sqltopdep,Conn,1,1
    if not rstopdep.EOF then
    while not rstopdep.EOF
    %>
    <tr>
        <td align="left" width="100%"><a class=class target="_blank" href="dep.asp?id=<%=rstopdep("id")%>"><%=rstopdep("E_DepName")%>-<%=rstopdep("E_DepType")%></a></td>
    
    </tr>
    <%rstopdep.MoveNext
    wend
    end if
    rstopdep.close
    set rstopdep=nothing
    %>
    <tr>
        <td align=right  width="75%" colspan="2"><a class=class href="E_Alldep.asp">更多</a></td>
    </tr>
</table>


问题是sqltopdep="select top 5 * from "& db_EC_Dep_Table &" where depnumber>=0 order by depnumber desc"中的5为什么不起作用?谢谢
6 回复
#2
lili06109312008-05-09 09:23
说哪里出错了,说出来再给你
#3
madpbpl2008-05-09 10:32
while not rstopdep.EOF
改成
i=1
while not rstopdep.EOF and i<=5
i=i+1
#4
greatbin2008-05-12 14:11
谢谢!为什么里面的5不起作用啊!!
别的都可以啊!!
#5
greatbin2008-05-12 14:13
再说
select top 5 * from "& db_EC_Dep_Table &" where depnumber>=0 order by depnumber desc中的5应该是只从数据库表选出5个数据,可实际是数据表全部被列出来啊!!
#6
yms1232008-05-12 14:42
实际数据表的数据有多少条?
#7
tianyu1232008-05-12 14:57
关键字top和order by结合使用是会容易出现问题的,原因在于当字段
depnumber有很多重复值时,系统无法确认将哪5条记录提取出来,所以就会产生读出所有的记录。

解决方法一:
再增加一个排序字段,也就是说当字段depnumber相同时,让系统按另外一个字段排序.

解决方法二:
这样:
select top 5 * from "& db_EC_Dep_Table &" where depnumber>=0

或者:
select top 5 * from (select top 5 * from "& db_EC_Dep_Table &" where depnumber>=0) a order by a.depnumber desc
1