做一个显示查询结果的页面,用到数据分页,可是不无论我怎么改rs.absolutepage的值都是-1,气死我了!!

wang0628 2002-02-01 11:56:14
这个是原码,连接数据库和查询部分给省略了,有耐心可以看一下:
<% set rs=server.createobject("adodb.recordset")
rs.open sqlstr,conn,1
if not rs.eof then
rs.pagesize=2
response.write(rs.absolutepage)
if not isempty(request.querystring("topage")) then
topage=cint(request("topage"))
if topage>rs.pagecount then
rs.absolutepage=rs.pagecount
else
if topage<=0 then
rs.absolutepage=1
else
rs.absolutepage=topage
end if
end if
else
'这里明明赋了值,可是rs.absolutepage还是-1
rs.absolutepage=1
response.write(rs.absolutepage)
end if
current_page=rs.absolutepage
%>
<div align="center">
共找到<font color=red><%=rs.recordcount%></font>条记录,目前的分页状况为<font color=red><%=current_page+0%>/<%=rs.pagecount%></font>页</div>
<% display_page rs,current_page
sub display_page(rs,page)
rs.absolutepage=page
for i=1 to rs.pagesize
if rs.eof then
exit for
end if
%>
<table border=1 align="center" width="600">
<tr bgcolor="#ffffcc">
<td>登录号</td>
<td>姓名</td>
<td>主队列</td>
<td>周数</td>
<td>本周话量</td>
<td>通话小时</td>
<td>通话分钟</td>
<td>测听成绩</td>
<td>本周进步</td>
</tr>
<tr>
<td><%=rs("name")%></td>
<td><%=rs("cnumber")%></td>
<td><%=rs("alignment")%></td>
<td><%=rs("weeknum")%></td>
<td><%=rs("voicamount")%></td>
<td><%=rs("voichour")%></td>
<td><%=rs("voicminute")%></td>
<td><%=rs("grade")%></td>
<td><%=rs("advancement")%></td>
</tr>
<tr>
<td colspan="2" bgcolor="#ffffcc">本周技术及单据</td>
<td colspan="6"> <%=rs("technicdoc")%></td>
<td rowspan="4" bgcolor="#ffffcc" align="center"><a href="mondify.asp?id=<%=rs("id")%>">修改</a><br><br>删除</td>
</tr>
<tr>
<td colspan="2" bgcolor="#ffffcc">本周考勤情况</td>
<td colspan="6"> <%=rs("workattend")%></td>
</tr>
<tr>
<td colspan="2" bgcolor="#ffffcc">测听评价</td>
<td colspan="6"> <%=rs("appraise")%></td>
</tr>
<tr>
<td colspan="2" bgcolor="#ffffcc">其它特殊纪录</td>
<td colspan="6"> <%=rs("other")%></td>
</tr>
</table><br>
<%
rs.movenext
next
end sub
%>
<table align="center" height="15">
<tr>
<% if current_page>1 then %>
<td valign="top" width="80" height="15"> <a href=query.asp?topage=<%=1%>>第一页</a>
</td>
<td valign="top" width="80" height="15"> <a href=query.asp?topage=<%=current_page-1%>>上一页</a>
</td>
<% end if
if current_page<rs.pagecount then
%>
<td valign="top" width="80" height="15"> <a href=query.asp?topage=<%=current_page+1%>>下一页</a>
</td>
<td valign="top" width="80" height="15"> <a href=query.asp?topage=<%=rs.pagecount%>>最后一页</a>
</td>
<% end if
%>
<% if rs.recordcount>rs.pagesize then
%>
<td valign="top" width="80" height="15">
<form name="form1" method="POST" action="query.asp">
到第<input type="text" name="topage" size="3" maxlength="3" style="height:15px;width:20px" value="<%=currentpage%>">页
</form>
<% end if
%>
</td>
</tr>
</table>
<%
else
response.write("<p align='center'>没有合适的记录</p>")
end if
set rs=nothing
end if
%>
</body>
</html>
...全文
166 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
MeXP 2002-02-05
  • 打赏
  • 举报
回复
这个问题我也没有彻底搞清楚,我的问题和你一模一样,你可去查http://www.microsoft.com/china/msdn/library/下的[平台SDK/ADO程序员参考/通过 ADO 使用 OLE DB 提供者,也许对你有点帮助.
AdPosUnknown提供者不支持 AbsolutePage 属性,所以他总为-1。我想应该是引擎提供者的问题,改用Jet引擎连接Access数据库,就可以支持了
wang0628 2002-02-02
  • 打赏
  • 举报
回复
我试了,还是不行
我以前用sql server做后台数据库,程序基本上和这个一样,运行没问题,
这次用的access就不行了,是什么原因?
希偌 2002-02-02
  • 打赏
  • 举报
回复
这种问题在我初学的时候也遇见过,解决方法就是那么简单!
如果你在rs.open前加上下面两句,一切就会好起来了!
rs.cursortype=1
rs.locktype=3
wang0628 2002-02-02
  • 打赏
  • 举报
回复
我终于找到答案了!
这不是rs的游标类型和锁定类型的问题,这两个值用1,1就没问题,
真正的原因是连接数据库的问题,
我以前是用这种方法连的access数据库:
<%
set conn=server.createobject("adodb.connection")
connstr="provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\zhx\legendasp\legend_db.mdb"
conn.open connstr

%>
我这个东西是帮别人做的,那个人说上面这种方法在他那里连不上数据库,让我改用他的方法:
<%
connstr="DBQ="+server.mappath("legend_db.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
%>
这种方法倒是也能连到数据库,可是就发生了rs.absolutepage永远是-1的情况!
不知道这两种方法有什么区别?
ar7_top 2002-02-02
  • 打赏
  • 举报
回复
下面这样打开数据链接就可以了
对了,还想问问你是不是用的 Oracle 数据库,我用 Oracle 的时候碰到了你这个问题,就是下面这样解决的,希望对你有帮助

Set Conn = Server.CreatObject("ADODB.Connection")
Set Rs = Server.CreatObject("ADODB.Recordset")
Rs.ActiveConnection = Conn
Rs.CursorLocation = adUseClient '客户端游标
Rs.CursorType = adOpenStatic
Rs.Open (Sqlstr)
ehom 2002-02-02
  • 打赏
  • 举报
回复
你方法的缺点是:不管是第几页,都需要返回整个记录集再分页!比如你的数据库有10000条记录,而你想看第一页的10条,确也需要先返回10000条!所以应该根据页码确定要返回的记录,这样效率较高!但如果你的数据量不大那就用现在的方法!
最好再像一些搜索引擎一样,不关有多少相关记录,最多只返回一定固定数目的记录!

给段示例代码(部分):

dim pagenum
dim topnum
dim totalrec
pagenum=request.querystring("page")
if pagenum="" then pagenum=1
if not IsNumeric(pagenum) then pagenum=1
if pagenum=<0 then pagenum=1
if pagenum>99999 then pagenum=1
pagenum=fix(pagenum)
topnum=pagenum*20
sql="select top "&topnum&" ID,date,title from article where type="&ID
rs.open sql,arconn,1,1
totalrec=rs.recordcount
if (totalrec mod 20)=0 then
lastpage=totalrec\20
else
lastpage=totalrec\20+1
end if
if (pagenum-1)*20>=totalrec then
if (totalrec mod 20)=0 then
pagenum=totalrec\20
else
pagenum=totalrec\20+1
end if
end if
if not pagenum=1 and (pagenum-1)*20<totalrec then
rs.move (pagenum-1)*20
else
pagenum=1
end if
ehom 2002-02-02
  • 打赏
  • 举报
回复
http://www.csdn.net/Expert/topic/509/509165.shtm以前就有很多这类帖子!
wang0628 2002-02-02
  • 打赏
  • 举报
回复
怎么能提高效率?
如果能提供个高效率的我给90分!
jarryweiz 2002-02-02
  • 打赏
  • 举报
回复
rs.open sqlstr,conn,1,1
试试可否。
ehom 2002-02-02
  • 打赏
  • 举报
回复
rs.open sqlstr,conn,1
改为
rs.open sqlstr,conn,3
另提醒一句,你的分页程序在数据较多时效率不高!
ehom 2002-02-02
  • 打赏
  • 举报
回复
rs.open sqlstr,conn,1
改为
rs.open sqlstr,conn,3
另提醒一句,你的分页程序效率很低!

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧