2018有可能限牌的城市:asp编程的分页问题,请了两个朋友过来看都解决不了这个问题,哪位大虾帮帮忙,感激不尽

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 02:39:58
各位路过的大虾请抽一点时间帮忙看看问题出在什么地方
问题特征:分页问题,在首页列表主题超过20个分页,点击下一页或尾页,出来的下方下放出现错误,不

能正常显示
演示地址是:http://www.12bs.com

错误类型:
ADODB.Field (0x80020009)
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
/index.asp

能找出问题所在吗?

比较急,困惑中。求助大虾,感激不尽,先说声:谢谢

以下是截取的相关代码

<td width="33%" align="right" class="style2"><a href="?page=1" class="style2">首页

</a>|<a href="?page=<%=page-1%>" class="style2">上一页</a>|<a href="?page=<%=page+1%>"

class="style2">下一页</a>|<a href="?page=<%=rs.pagecount%>" class="style2">尾页</a></td>
</tr>
</table></td>
</tr>
</table>
<%end if%>
<%if session("sex")="Boss" then%><table width="900" border="0" cellpadding="5"

cellspacing="1" bgcolor="#<%=cotd%>">
<tr style="cursor:hand" onClick="opent1()">
<td align="center" bgcolor="#FFFFFF"><span id="s1">[管理面板]</span></td>
</tr>
<tr id="t1" style="display:none;">
<td bgcolor="#<%=cotbc%>">
<table width="100%" border="0" cellpadding="5" cellspacing="1" bgcolor="#<%

=cotd%>">
<tr>
<td bgcolor="#FFFFFF"><span style="font-weight: bold">[版块操作]</span></td>
</tr> <tr>
<td bgcolor="#FFFFFF">版块信息:<%
sql="select * from clas order by id desc"
set rs=Server.CreateObject("Adodb.Recordset")
rs.open sql,conn,1,1
if rs.recordcount>0 then
for i=1 to rs.recordcount
response.write("<a href='select.asp?clas="&rs("name")&"'><font

color='#"&cotd&"'>"&rs("name")&"</font></a>")
if not rs.eof then
response.write(" ")
rs.movenext
else
exit for
end if
next
end if%></td>
我觉得第二个回答似乎找到了问题所在,我发够40个帖子分成两页的时候,点击下一页就没有这个问题了
但我是个新手,不会写,哪位高手帮忙写一个,该放在什么地方,解决问题就采纳

第二个回答者:多线程单循环
更改循环
你设定了一页必需显示20条记录。所以就算数据库到了结尾也要显示20条记录,指针还在向下走,就会出现EOF为真。
你写个判断应该可以搞定。

你的循环条件是i=1 to rs.recordcount,循环过程中i没变,一直等于1,所以循环就一直继续下去,直到所有的记录写完了,循环还没有结束,所以这时出现了以上问题,记录不存在!定义i为变量,i的初值=1,循环的过程中,i要自增1
这样改,
if rs.recordcount>0 then
i=1
for i<rs.recordcount
response.write("<a href='select.asp?clas="&rs("name")&"'><font

color='#"&cotd&"'>"&rs("name")&"</font></a>")
response.write(" ")
rs.movenext
i=i+1
next
end if
或者:
if rs.recordcount>0 then
do while not(rs.eof or err)
response.write("<a href='select.asp?clas="&rs("name")&"'><font
color='#"&cotd&"'>"&rs("name")&"</font></a>")
response.write(" ")
rs.movenext
loop
end if

更改循环
你设定了一页必需显示20条记录。所以就算数据库到了结尾也要显示20条记录,指针还在向下走,就会出现EOF为真。

你写个判断应该可以搞定。

该错误表明数据库记录已到结尾

最后几句做个调整后看一下是否可以
if not rs.eof then
response.write(" ")
rs.movenext

else
exit for
next
end if

end if%></td>

您这里差了一个跳转页面的ASP代码"rs.absolutepage",而且没有把返页的PAGE值传回来.
这样改一下.
sql="select * from clas order by id desc"
set rs=Server.CreateObject("Adodb.Recordset")
rs.open sql,conn,1,1
page=cint(request("page"))
n=rs.RecordCount
rs.pagesize=20
m=cint(rs.pagecount)
if page="" then
page=1
elseif page<1 then
page=1
end if
if cint(request("page"))>m then
page=m
end if
page=cint(page)
if not rs.eof then
rs.absolutepage=page
end if
if not rs.eof then
for i=1 to rs.pagesize
response.write("<a href='select.asp?clas="&rs("name")&"'><font color='#"&cotd&"'>"&rs("name")&"</font></a>")
rs.movenext
if rs.eof then exit for
next
end if

相关例子:www.esou.com.cn/temp/test/userlist.asp
相关源码:www.esou.com.cn/temp/test/test.rar

如果还解决不了,或大家想交流一下编程方面,您可以加我QQ:123526160