asp vbscript中分页效果遇到的问题。。。。。。高分求取!!!!

来源:百度知道 编辑:UC知道 时间:2024/07/05 05:16:15
我用asp vbscript 语言 实现分页效果。用浏览器测试,当我点击最后一页时,出现如下错误提示:
ADODB.Recordset '800a0bcd'
BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
\wwwroot\xxx.asp, line 39

麻烦懂行的大侠们告诉我:
1.我哪里错了?
2.为什么错了??
3.应该怎么改???
共三个问题
谢谢!!!

我的代码如下:
<body>
<!--链结数据库和表-->
<%
set conn=server.CreateObject("adodb.connection")
conn.open "DRIVER=Driver do Microsoft Access (*.mdb);UID=admin;PWD=;DBQ="&Server.MapPath("kadaxue.mdb")
%>
<%
set rs=server.CreateObject("adodb.recordset")
rs.open"info order by [s_no] desc",conn,1,1
%>

<!--规定每页显示3条记录,分?页,定位所在页-->
<%
rs.pagesize=3 '每页有多少记录
zongye=rs.pagecount '分成几页
page=int(request("page"))
if page<=0 then page=1
if request("page")="" then page=1
rs.absolutepage=page
%>

1.<%for i=1 to rs.pagesize%>
<%=rs("s_name")%>
<br>
<%
rs.movenext
next
%>错了
2.你在输出之前没有判断是否到达最后一个记录
只是不停 rs.movenext 输出最后一个记录后 在movenext 指针就会指向整个记录集的末尾(一条空记录,此时rs.eof 属性为真),当下一个循环开始输出<%=rs("s_name")%>
就会出错。所以在输出之前 只需要判断一下 rs.eof是否为真 就能知道当前指针是否指向了末尾。
当然还可以在开始用select count(*) from info 来得到总记录数 然后 赋值给一个变量 ,没循环一次 变量减去1,在输出之前检查变量的值 只要大于1 就可输出 否则 输出后马上跳出循环即可。

3.
<!--用for循环输出info表内容-->
<%for i=1 to rs.pagesize
'输出之前先判断一下是否已经到记录末尾
if rs.eof then exit for
%>
<%=rs("s_name")%>
<br>
<%
rs.movenext
next
%>

最后没有数据就错误了,在asp代码句首加上这句吧
On Error Resume Next

zongye=rs.pagecount '分成几页
这句有问题。应该是
zongye=cint(rs.pagecount/rs.pagesize)

connstr="DBQ="+server.mappath("shihao.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driv