这段asp代码错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/06/27 22:14:20
<%exec="select * from Special order by SpecialID desc, isgood desc" '降序是desc,升序是asc
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
rs.PageSize=5 '定义每页显示多少条信息
pagecount=rs.PageCount
page=int(request.QueryString ("page"))
if page<=0 then page=1
if request.QueryString("page")="" then
page=1
end if
rs.AbsolutePage=page
maxtiao=rs.recordcount
%><TR><TD vAlign=top align=left width="1%" bgColor=#8dcf46><IMG height=22 src="pinluo.com_style1/music07zjqie_69.gif" width=9></TD><TD align=middle width="98%" bgColor=#8dcf46><SPAN class=wirth12b><FORM class=wirth12b action="PL_SpecialList.asp?page=" method=get>共 <FONT color=#ff0000><B><%response.write maxtiao%></B></FONT> 张专辑  <A class=wirth12b href="PL_SpecialList.asp?pa

楼上说的好像不对哦。
你怀疑的那个rs.movenext是在if not rs.eof里面的,不是在if len(PL_NClass)>10里面的。

======================
问题应该在这里:
在变量j的循环中,每次加1都要执行一次rs.movenext;
我们来看当j=5时进入j的最后一次循环时发生的事情:
此时,记录指向了本次的第5条记录,进行了正常的操作;
现在到了rs.movenext处,执行后记录指向了本次的第6条记录;
然后执行next使得就j=6,然后退出了循环。
然后,继续执行j变量的For循环后面的语句。
后面是什么呢?又是一个rs.movenext。这个是i变量的For循环中的。
这样,第6条记录没有被显示就到了第7条记录了,于是少了条记录。
可见,在i变量的For循环最后的rs.movenext是完全没有必要的,因为所有的记录移动工作都在j变量的For循环中进行了。

所以结论是:把那个变量i的For循环里面的rs.movenext删除掉就可以了。

顺便问下楼主:
你在一个页面内就把所有的记录显示完了,用AbsolutePage分页有什么意思呢?
那些“上一页”、“下一页”的连接也都没有必要存在了。

最后这几句有问题:
<%
PL_NClass=rs("NClass")
if len(PL_NClass)>10 then
PL_NClass=left(PL_NClass,10)&"…"
response.write PL_NClass%>
</A></TD></TR></TBODY></TABLE></TD>
<%rs.movenext '问题就在这里,如果你的条件成立了,就会自动Movenext一条记录。
end if
next%></TR><%r