编程论坛's Archiver

greatbin 发表于 2008-5-9 08:45

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

源码如下:
<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为什么不起作用?谢谢

lili0610931 发表于 2008-5-9 09:23

说哪里出错了,说出来再给你

madpbpl 发表于 2008-5-9 10:32

while not rstopdep.EOF
改成
i=1
while not rstopdep.EOF and i<=5
i=i+1

greatbin 发表于 2008-5-12 14:11

谢谢!为什么里面的5不起作用啊!!

别的都可以啊!!

greatbin 发表于 2008-5-12 14:13

再说

select top 5 * from "& db_EC_Dep_Table &" where depnumber>=0 order by depnumber desc中的5应该是只从数据库表选出5个数据,可实际是数据表全部被列出来啊!!

yms123 发表于 2008-5-12 14:42

实际数据表的数据有多少条?

tianyu123 发表于 2008-5-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]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.