所有的 Recordset 对象都支持 Move 方法,如果 NumRecords 参数大于零,当前记录位置向末尾的方向移动;如果其小于零,则当前记录位置向开头的方向移动;如果一个空的 Recordset 对象调用 Move 方法,将会产生一个错误。
MoveFirst 方法:将当前记录位置移至第一笔记录。
MoveLast 方法:将当前记录位置移至最后一笔记录。
MoveNext 方法:将当前记录位置移至下一笔记录。 MovePrevious 方法:将当前记录位置移至上一笔记录。
Move 'n' 方法:移动指标到第 n 笔记录, n 由 0 算起。
三、 AbsolutePage 属性
AbsolutePage 属性设定当前记录的位置是位于哪一页的页数编号;使用 PageSize 属性将 Recordset 对象分割为逻辑上的页数,每一页的记录数为 PageSize( 除了最后一页可能会有少于 PageSize 的记录数 )。这里必须注意并不是所有的数据提供者都支持此项属性,因此使用时要小心。
与 AbsolutePosition 属性相同, AbsolutePage 属性是以 1 为起始的,若当前记录为 Recordset 的第一行记录, AbsolutePage 为 1。可以设定 AbsolutePage 属性,以移动到一个指定页的第一行记录位置。
四、 AbsolutePosition 属性
若您需要确定目前指标在 RecordSet 中的位置,您可以用 AbsolutePosition 属性。
AbsolutePosition 属性的数值为目前指标相对於第一笔的位置,由 1 算起,即第一笔的 AbsolutePosition 为 1。
注意 ; 在存取 RecordSet 时,无法保证 RecordSet 每次都以同样的顺序出现。
若要启用 AbsolutePosition,必须先设定为使用用户端 cursor( 指针 ), asp 码如下:
rs2。CursorLocation = 3
五、 PageCount 属性
使用 PageCount 属性,决定 Recordset 对象包括多少〃页〃的数据。这里的〃页〃是数据记录的集合,大小等于 PageSize 属性的设定,即使最后一页的记录数比 PageSize 的值少,最后一页也算是 PageCount 的一页。必须注意也并不是所有的数据提供者都支持此项属性。
六、 PageSize 属性
PageSize 属性是决定 ADO 存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的〃一页〃。设定并建立一个页的大小,从而允许使用 AbsolutePage 属性移到其它逻辑页的第一条记录。 PageSize 属性能随时被设定。
七、 RecordCount 属性
这也是一个非常常用和重要的属性,我们常用 RecordCount 属性来找出一个 Recordset 对象包括多少条记录。如: 《 % totle=RS。RecordCount %》
在了解了 Recordset 对象的以上属性和方法后,我们来考虑一下,如何运用它们来达到我们分页显示的目的。首先,我们可以为 PageSize 属性设置一个值,从而指定从记录组中取出的构成一个页的行数;然后通过 RecordCount 属性来确定记录的总数;再用记录总数除以 PageSize 就可得到所显示的页面总数;最后通过 AbsolutePage 属性就能完成对指定页的访问。好象很并不复杂呀,下面让我们来看看程序该如何实现呢?
我们建立这样一个简单的 BBS 应用程序,它的数据库中分别有以下五个字段:〃ID〃,每个帖子的自动编号;〃subject〃,每个帖子的主题;〃name〃,加帖用户的姓名; 〃email〃,用户的电子邮件地址;〃postdate〃,加帖的时间。数据库的 DSN 为〃bbs〃。我们将显示帖子分页的所有步骤放在一个名为〃ShowList()〃的过程中,方便调用。程序如下:
"…………BBS 显示帖子分页…………
《 % Sub ShowList() %》
《 %
PgSz=20 "设定开关,指定每一页所显示的帖子数目,默认为20帖一页
Set Conn = Server。CreateObject(〃ADODB。Connection〃)
Set RS = Server。CreateObject(〃ADODB。RecordSet〃)
sql = 〃SELECT * FROM message order by ID DESC〃
"查询所有帖子,并按帖子的ID倒序排列
Conn。Open 〃bbs〃
RS。open sql;Conn;1;1
If RS。RecordCount=0 then
response。write 〃《 P》《 center》对不起,数据库中没有相关信息!《 /center》《 /P》〃
else
RS。PageSize = Cint(PgSz) "设定PageSize属性的值
Total=INT(RS。recordcount / PgSz * …1)*…1 "计算可显示页面的总数
PageNo=Request(〃pageno〃)
if PageNo=〃〃 Then
PageNo = 1
else
PageNo=PageNo+1
PageNo=PageNo…1
end if
ScrollAction = Request(〃ScrollAction〃)
if ScrollAction = 〃 上一页 〃 Then
PageNo=PageNo…1
end if
if ScrollAction = 〃 下一页 〃 Then
PageNo=PageNo+1
end if
if PageNo 《 1 Then
PageNo = 1
end if
n=1
RS。AbsolutePage = PageNo
Response。Write 〃《 CENTER》〃
position=RS。PageSize*PageNo
pagebegin=position…RS。PageSize+1
if position 《 RS。RecordCount then
pagend=position
else
pagend= RS。RecordCount
end if
Response。Write 〃《 P》《 font color="Navy"》《 B》数据库查询结果:《 /B》〃
Response。Write 〃(共有〃&RS。RecordCount &〃条符合条件的信息;显示〃&pagebegin&〃…〃&pagend&〃)《 /font》《 /p》〃
Response。Write 〃《 TABLE WIDTH=600 BORDER=1 CELLPADDING=4 CELLSPACING=0 BGCOLOR=#FFFFFF》〃
Response。Write 〃《 TR BGCOLOR=#5FB5E2》《 FONT SIZE=2》《 TD》《 B》主题《 /B》《 /TD》《 TD》《 B》用户《 /B》《 /TD》《 TD》《 B》Email《 /B》《 /TD》《 TD》《 B》发布日期《 /B》《 /TD》《 /FONT》《 TR BGCOLOR=#FFFFFF》〃
Do while not (RS is nothing)
RowCount = RS。PageSize
Do While Not RS。EOF and rowcount 》0
If n=1 then
Response。Write 〃《 TR BGCOLOR=#FFFFFF》〃
ELSE
Response。Write 〃《 TR BGCOLOR=#EEEEEE》〃
End If
n=1…n %》
《 TD》《 span style=〃font…size:9pt〃》《 A href="view。asp?key=《 % =RS(〃ID〃)%》"》《 % =RS(〃subject〃)%》《 /A》《 /span》《 /td》
《 TD》《 span style=〃font…size:9pt〃》《 % =RS(〃name〃)%》《 /A》《 /span》《 /td》
《 TD》《 span style=〃font…size:9pt〃》《 a href=〃mailto:《 % =RS(〃email〃)%》〃》《 % =RS(〃email〃)%》《 /a》《 /span》《 /TD》
《 TD》《 span style=〃font…size:9pt〃》《 % =RS(〃postdate〃)%》《 /span》《 /td》
《 /TR》
《 %
RowCount = RowCount 1
RS。MoveNext
Loop
set RS = RS。NextRecordSet
Loop
Conn。Close
set rs = nothing
set Conn = nothing
%》
《 /TABLE》
《 FORM METHOD=GET ACTION=〃list。asp〃》
《 INPUT TYPE=〃HIDDEN〃 NAME=〃pageno〃 VALUE=〃《 % =PageNo %》〃》
《 %
if PageNo 》1 Then
response。write 〃《 INPUT TYPE=SUBMIT NAME="ScrollAction" VALUE=" 上一页 "》〃
end if
if RowCount = 0 and PageNo 《 》Total then
response。write 〃《 INPUT TYPE=SUBMIT NAME="ScrollAction" VALUE=" 下一页 "》〃
end if
response。write 〃《 /FORM》〃
End if
%》
《 % End Sub %》
相信大家都应该能完全读懂上面的程序,因此作者就不在此详细解释了。值得注意的是在这段程序中运用了一个小技巧
《 INPUT TYPE=〃HIDDEN〃 NAME=〃pageno〃 VALUE=〃《 % =PageNo %》〃》
,这是用来在每次调用该 ASP 文件时传递数据的〃暗道〃,由于我们需要在每次调用程序时传递代表当前页码的参数,可能大家会想到使用 session,但是从节省系统资源和通用性来讲,用这样一个隐藏的 form 来传递数据将会达到更好的效果。
好了,又到了说再见的时候了,如果你没完全看懂本篇中所列的程序,那你必须加把油,看一看 VbScript 的语法;如果你还有某些疑问,可以〃妹儿〃我,我将尽力解答;如果你有什么更好的建议也千万要来信告诉我哦 :)
ASP基础教程:堵住ASP漏洞
无论你相不相信,通过 asp,可能可以很方便地入侵 web server、窃取服务器上的文件、捕获 web 数据库等系统的用户口令,甚至恶意删除服务器上的的文件,直至造成系统损坏,这些都决非耸人听闻,而且都确确实实发生过,本文将向你一一揭示这些 asp 存在的
小说推荐
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 其他
- 最新章:第17章
- JSP入门教程(DOC格式)
- -Page 1-jsp 入门教程0.0.1版权(c 2008 叮咚老菜鸟叮咚对文档的任何问题或建议,请给叮咚发邮件或留言。QQ:475784337QQ 群:51239192MSN:lingirl6@hotmail.EMAIL:lingirl6@hotmail.2008-02-28 20:05:061
- 其他
- 最新章:第37章
- 路由器基本知识及应用实例(DOC格式)
- 第二章 路由器第一节 路由器发展概述自从1984年问世至今,路由器已经走过了近20年的快速技术发展历程。路由器的应用领域不断扩展、从单一的互通网关逐渐扩展到覆盖广域网、城域网乃至用户接入的各个领域。近年来,路由器早已逐渐脱离单纯用于企业网出口和互联的概念,开始成为运营网络和各种专用业务网络的核心设备
- 其他
- 最新章:第48章
- Word2003使用技巧大全(DOC格式)
- Word使用技巧(二)表格使用大全更新时间:2009-11-16 19:32:15 本文共阅读了257次 作者:xushezheng 文章来源:电教组字体大小:大中小一、快速插入表格 拖动“插入表格”能插入的最大表格跟该图标位置、显示分辨率有关。如使用800×600分辨率时最大为18行×28列 二、
- 其他
- 最新章:第1章
- Excel word ppt office使用技巧大全(DOC格式)
- -Page 1-Excel_word_ppt_使用技巧大全(完全版)Excelwordppt使用技巧大全(2011新版本)I-Page 2-Excel_word_ppt_使用技巧大全(完全版
- 其他
- 最新章:第338章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 其他
- 最新章:第37章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 其他
- 最新章:第31章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 其他
- 最新章:第214章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章