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.RecordCout 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 %>
内容版权声明:除非注明,否则皆为本站原创文章。