做一个显示查询结果的页面,用到数据分页,可是不无论我怎么改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>
...全文
139 11 打赏 收藏 转发到动态 举报
写回复
用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
另提醒一句,你的分页程序效率很低!
asp的七种分页方法! 简单 实用 是有点乱 ASP中七种实现分页显示的方法 MS Visual InterDev6.0中七种实现分页显示的方法 我们在编制与数据库有关的Web网页时,由于要显示数据量巨大,常常面临一个数据记录分页显示的问题。 -------------------------------------------------------------------------------- 在微软的ASP编程体系中,ADO对象的建立,使得从网页访问数据库成为一件易事,特别是ADO的Recordset对象使得控制数据的输出显示更为方便、自由。而在Visual InterDev6.0(以下简称VI6.0)中,由于Script Object Model(以下简称SOM)、Design-Time Control(以下简称DTC)以及Data Environment Object Model(以下简称DEOM)等对象模型的引入,使网页对数据库的访问设计显得更为方便。 因为主题方面的原因,关于数据库的连接,下文只给出代码和简要注释,而把重点放在如何利用Recordset对象(或控件)实现数据记录的分页显示方面。根据我的理解,分页显示的关键就在于对ADO的Recordset对象或DTC(设计时控件)的Recordset控件的属*和方法的熟练把握上。 这七种分页显示的方法概括起来说分四类: 第一、二种我暂取名叫“纯ASP法”,这也是国内的ASP网站上用得最多的方法,它们的区别仅在实现技巧的不同。这两种方法的实现最易理解,用到的对象概念也最少,对开发环境的要求也最低(只要记事本就行)。可以说,这两种方法的实质还是CGI的编程思想,只是在程序中引入了ADO对象而已。 第四、五种暂取名叫“SOM的DHTML法”。这两种方法要求在VI6.0的环境下,利用微软提出的脚本对象模型(Script Object Model)和DHTML中Table对象的与数据库绑定的新特*(许多书和文章只介绍了DHTML的CSS特*在样式设计中的运用而忽略介绍其数据绑定特*),实现在客户端控制翻页。但它要求用户的浏览器必须是支持DHTML,如:Microsoft Internet Explorer 4.0及以上的版本。 第六种暂取名叫“SOM服务器端法”。要求在VI6.0的环境下开发,它利用微软提出的脚本对象模型(Script Object Model)中的几个DTC控件:Recordset、PageObject、Grid等在服务器端(客户端)实现翻页控制。这是一种激动人心的、全新的编程方法,它把网页看成对象(这种对象模型和传统的DOM----document object model是有区别的:DOM只能控制客户端,而SOM可控制服务器端和客户端),它真正实现了网页的面向对象编程。但遗憾的是,也许是我个人能力有限,这种技术我个人认为还不是很成熟,比如,与浏览器的结合还不是很好,这将在后文详细说明。 第七种暂取名叫“DEOM法”。它也是利用了VI6.0中建立的数据环境对象模型(Data Environment Object Model)建立Recordset对象。这也是在网页编程上比较少见的新方法,与SOM模型相比,自有它的优点,这将在后文详述。 在后面所举的所有例子源代码,都可以直接拷贝使用,你甚至可以不懂其原理,只要把其中的粗斜体字部分换成相应自己的数据库名或字段名就可以了。 在开始详细介绍各种分页方法前,让我们先创建一个数据库:用Office97中的access自创一个Employee.mdb,其中建一个表emp,只设三个字段:emp ID,last name和first name。为什么这么简单,是因为我们关心的是怎样处理recordset的结果。 第一种:参数直接代入法。 这种方法是用手工建立Recordset对象,利用其pagesize(每页指定显示记录数),pagecount(总页码数)和absolutepage(当前页码数)属*来控制分页的输出。分页采用直接带页码参数的方法来控制翻页。网页的名字为emp1.asp。源代码如下: <%//建立与employee.mdb数据库的连接。 Set conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=employee.mdb" //建立emp表的Recordset对象实例rs。 Set rs = Server.CreateObject("ADODB.Recordset") rs.Open "emp", conn, 3
第一部分 软件可行性研究与项目开发计划 1. 问题定义 随着时代的进步,网络技术层出不穷信息量急剧膨胀,整个人类社会已成为信息化的社会,人们对信息和数据的处理。管理和加工已经进入自动化、网络化和社会化的阶段。博客的兴起,让更多的人在网络上,建起了展示自己的空间,同时更多的人愿意在网络上,分享个人的心情日记,个人收藏,这些都是普通的博客内容。 本次论文的目的制作网络日记本,我们要实现网络日记本的增加、删除、修三大部分的内容。设计完成网络日记本,让它具有文章分类、日期时间显示、后台管理等功能。此次论文的开发过程,我们采用asp作为开发语言,Micsoft Access为数据库, 软件运行环境Pentium处理器+IIS+IE6.0+128MB。 2.可行性研究 本论文共分八个章节完成,我们的本次制作任务。在第一章,我们将把我们即将遇到的问题提出来,以便在以后的章节中完成它,并制定项目开发的进程计划;第二章软件需求分析,在本章节中,我们将逐一分析制作过程中遇到的问题,例如:看日记,写日记,删除日记,日记管理等,并且把相关数据数据字典;第三章软件概要设计,在这一章节中,我们将把各个问题一一作以详细的分析,并且制定解决的办法,用数据流程图,模拟日记本在使用过程中出现的情况;第四章软件详细设计,在此章节,我们将再次将日记本的各个功能提出,加以详细的分析,完成系统将出现的每一个细节。通过这一部分,我们将完成日记本制作的理论部分;第五章软件编码,顾名思义,在这一章节中,我们将对日记本实行软件编码,在实际中解释每段编码的含义,具体完成日记的增加、删除、数据库连接这几部分;第六章软件测试与调试,在这章里,我们对软件进行测试运行,找到软件的不足,加以修正;第七章 结束语,本章节,是在制作工程中,个人的感受与收获的总结;第八章附录,此章节为本次论文的结尾部分。 3.项目开发计划 本次论文的时间安排如下 (1)需求分析阶段:(2007年4月份---2007年5月份) (2)详细设计阶级:(2007年5月份---2007年6月份) (3)测试阶段:(2007年6月份) 第二部分 软件需求分析 1. 用户功能和数据流图(DFD) 在项目可行性研究的基础之上,我们对系统各项功能进行了初步的分析。 1.1 管理界面登陆 本软件采用的是前台录入方式,所以日记的一切管理无需从后台进入才能进行操作。在前台完成所有操作,这一点我们将在以后的章节详细说明。在登陆到管理界面,我们要输入管理员账号和密码,进入到管理主界面。在主界面进行所要的基本操作。 (1)在登陆界面,我们输入账户信息,账户信息包括管理员登陆名和管理员密码,这些信息经过基本信息库身份验证,如果信息错误将提示“输入错误”提示信息,显示错误界面。如用户不进行任何操作,界面将在5秒后自动返回最初的管理员登陆界面;如果信息正确无误,将进入管理主界面,管理员就可以进行自己所需要的详细操作了。此过程数据图(图2-1),所示 (图2-1) (2)账号的合法性验证,在登陆界面,我们将设置两个按钮,即“确定”和“重置”。当用户在输入密码后发现密码输入错误时,点击“重置”键即可将之前输入的密码清除。在用户输入密码后,点击“确定”键时,计算机将调用身份验证数据库进行身份验证,验证该登陆用户是否是合法的管理员。如果其密码输入正确将进入下一个界面。其数据流程图(图2-2)所示: (图2-2) 1.2 需求选择 当密码验证正确后进入需求界面,在此界面中有浏览、增加、删除、修密码等功能选项以退出按钮。(图2-3) (图2-3) 在接下来的部分里,我们将用数据流图的形式来表示各个需求选择的功能 1.3 浏览 其数据流程图(图2-4) (图2-4) 注:在浏览文章的时候,我们可以进行选题浏览,即:对自己所知道题目的文章直接浏览。还可以进行分类浏览,即:根据不同分类,选择不同的类别,在一种类别中进行文章浏览。 1.4 修密码 其数据流程图如下(图2-5) (图2-5) 注:㈠在请输入旧密码、新密码界面,我们在这里要求输入旧密码一次,用于修用户的合法性验证;输入新密码两次,用于新密码的一致性验证。 ㈡信息处理有三种情况ⅰ. 旧密码输入错误,返回修密码界面。ⅱ.新密码两次输入,两次输入不符,返回修密码界面。ⅲ.修密码成功,显示完成界面。 2. 数据字典(DD) 1)登陆名 长度:5-12位 类型:字符型 2)密码 长度:6-14位  类型:整型 3)文章内容 类型:整型 4)日期 __年__月__日 5)名称:基本信息库 登陆名 密码 6)名称:数据中心 文章名称 文章类别 文章写作日期 文章内容 7)名称:基本信

28,390

社区成员

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

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