⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asp教程:ado 存取数据库时如何分页显示.htm

📁 学习asp的基础教程
💻 HTM
📖 第 1 页 / 共 2 页
字号:
      <P>  AbsolutePosition 属性的数值为目前指标相对於第一笔的位置,由 1 算起,即第一笔的 AbsolutePosition 为 
      1。 </P>
      <P>  注意 , 在存取 RecordSet 时,无法保证 RecordSet 每次都以同样的顺序出现。 </P>
      <P>  若要启用 AbsolutePosition,必须先设定为使用用户端 cursor( 指针 ), asp 码如下: </P>
      <P>  rs2.CursorLocation = 3 </P>
      <P>  五、 PageCount 属性 </P>
      <P>  使用 PageCount 属性,决定 Recordset 对象包括多少“页”的数据。这里的“页”是数据记录的集合,大小等于 
      PageSize 属性的设定,即使最后一页的记录数比 PageSize 的值少,最后一页也算是 PageCount 
      的一页。必须注意也并不是所有的数据提供者都支持此项属性。 </P>
      <P>  六、 PageSize 属性 </P>  PageSize 属性是决定 ADO 
      存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“一页”。设定并建立一个页的大小,从而允许使用 AbsolutePage 
      属性移到其它逻辑页的第一条记录。 PageSize 属性能随时被设定。 
      <P>  七、 RecordCount 属性 </P>
      <P>  这也是一个非常常用和重要的属性,我们常用 RecordCount 属性来找出一个 Recordset 对象包括多少条记录。如: &lt; 
      % totle=RS.RecordCount %&gt; </P>  在了解了 Recordset 
      对象的以上属性和方法后,我们来考虑一下,如何运用它们来达到我们分页显示的目的。首先,我们可以为 PageSize 
      属性设置一个值,从而指定从记录组中取出的构成一个页的行数;然后通过 RecordCount 属性来确定记录的总数;再用记录总数除以 PageSize 
      就可得到所显示的页面总数;最后通过 AbsolutePage 
      属性就能完成对指定页的访问。好象很并不复杂呀,下面让我们来看看程序该如何实现呢?<BR><BR>  我们建立这样一个简单的 BBS 
      应用程序,它的数据库中分别有以下五个字段:“ID”,每个帖子的自动编号;“subject”,每个帖子的主题;“name”,加帖用户的姓名;“email”,用户的电子邮件地址;“postdate”,加帖的时间。数据库的 
      DSN 为“bbs”。我们将显示帖子分页的所有步骤放在一个名为“ShowList()”的过程中,方便调用。程序如下: 
      <BR><BR>'----BBS 显示帖子分页----<BR>&lt; % Sub ShowList() %&gt;<BR>&lt; 
      %<BR>PgSz=20 '设定开关,指定每一页所显示的帖子数目,默认为20帖一页<BR>Set Conn = 
      Server.CreateObject("ADODB.Connection")<BR>Set RS = 
      Server.CreateObject("ADODB.RecordSet")<BR>sql = "SELECT * FROM message 
      order by ID DESC"<BR>'查询所有帖子,并按帖子的ID倒序排列<BR>Conn.Open "bbs"<BR>RS.open 
      sql,Conn,1,1<BR>If RS.RecordCount=0 then<BR>response.write "&lt; P&gt;&lt; 
      center&gt;对不起,数据库中没有相关信息!&lt; /center&gt;&lt; 
      /P&gt;"<BR>else<BR>RS.PageSize = Cint(PgSz) 
      '设定PageSize属性的值<BR>Total=INT(RS.recordcount / PgSz * -1)*-1 
      '计算可显示页面的总数<BR>PageNo=Request("pageno")<BR>if PageNo="" Then<BR>PageNo = 
      1<BR>else<BR>PageNo=PageNo+1<BR>PageNo=PageNo-1<BR>end if<BR>ScrollAction 
      = Request("ScrollAction")<BR>if ScrollAction = " 上一页 " 
      Then<BR>PageNo=PageNo-1<BR>end if<BR>if ScrollAction = " 下一页 " 
      Then<BR>PageNo=PageNo+1<BR>end if<BR>if PageNo &lt; 1 Then <BR>PageNo = 
      1<BR>end if<BR>n=1<BR>RS.AbsolutePage = PageNo<BR>Response.Write "&lt; 
      CENTER&gt;"<BR>position=RS.PageSize*PageNo<BR>pagebegin=position-RS.PageSize+1<BR>if 
      position &lt; RS.RecordCount then<BR>pagend=position<BR>else <BR>pagend= 
      RS.RecordCount<BR>end if <BR>Response.Write "&lt; P&gt;&lt; font 
      color='Navy'&gt;&lt; B&gt;数据库查询结果:&lt; /B&gt;"<BR>Response.Write 
      "(共有"&amp;RS.RecordCount 
      &amp;"条符合条件的信息,显示"&amp;pagebegin&amp;"-"&amp;pagend&amp;")&lt; 
      /font&gt;&lt; /p&gt;"<BR>Response.Write "&lt; TABLE WIDTH=600 BORDER=1 
      CELLPADDING=4 CELLSPACING=0 BGCOLOR=#FFFFFF&gt;"<BR>Response.Write "&lt; 
      TR BGCOLOR=#5FB5E2&gt;&lt; FONT SIZE=2&gt;&lt; TD&gt;&lt; B&gt;主题&lt; 
      /B&gt;&lt; /TD&gt;&lt; TD&gt;&lt; B&gt;用户&lt; /B&gt;&lt; /TD&gt;&lt; 
      TD&gt;&lt; B&gt;Email&lt; /B&gt;&lt; /TD&gt;&lt; TD&gt;&lt; B&gt;发布日期&lt; 
      /B&gt;&lt; /TD&gt;&lt; /FONT&gt;&lt; TR BGCOLOR=#FFFFFF&gt;"<BR>Do while 
      not (RS is nothing) <BR>RowCount = RS.PageSize<BR>Do While Not RS.EOF and 
      rowcount &gt; 0 <BR>If n=1 then<BR>Response.Write "&lt; TR 
      BGCOLOR=#FFFFFF&gt;"<BR>ELSE<BR>Response.Write "&lt; TR 
      BGCOLOR=#EEEEEE&gt;"<BR>End If<BR>n=1-n %&gt;<BR>&lt; TD&gt;&lt; span 
      style="font-size:9pt"&gt;&lt; A href='view.asp?key=&lt; % 
      =RS("ID")%&gt;'&gt;&lt; % =RS("subject")%&gt;&lt; /A&gt;&lt; /span&gt;&lt; 
      /td&gt; <BR>&lt; TD&gt;&lt; span style="font-size:9pt"&gt;&lt; % 
      =RS("name")%&gt;&lt; /A&gt;&lt; /span&gt;&lt; /td&gt; <BR>&lt; TD&gt;&lt; 
      span style="font-size:9pt"&gt;&lt; a href="mailto:&lt; % 
      =RS("email")%&gt;"&gt;&lt; % =RS("email")%&gt;&lt; /a&gt;&lt; /span&gt; 
      &lt; /TD&gt;<BR>&lt; TD&gt;&lt; span style="font-size:9pt"&gt;&lt; % 
      =RS("postdate")%&gt;&lt; /span&gt; &lt; /td&gt;<BR>&lt; /TR&gt;<BR>&lt; 
      %<BR>RowCount = RowCount - 1<BR>RS.MoveNext<BR>Loop<BR>set RS = 
      RS.NextRecordSet<BR>Loop<BR>Conn.Close<BR>set rs = nothing<BR>set Conn = 
      nothing<BR>%&gt;<BR>&lt; /TABLE&gt;<BR>&lt; FORM METHOD=GET 
      ACTION="list.asp"&gt;<BR>&lt; INPUT TYPE="HIDDEN" NAME="pageno" 
      VALUE="&lt; % =PageNo %&gt;"&gt;<BR>&lt; % <BR>if PageNo &gt; 1 Then 
      <BR>response.write "&lt; INPUT TYPE=SUBMIT NAME='ScrollAction' VALUE=' 上一页 
      '&gt;"<BR>end if <BR>if RowCount = 0 and PageNo &lt; &gt;Total then 
      <BR>response.write "&lt; INPUT TYPE=SUBMIT NAME='ScrollAction' VALUE=' 下一页 
      '&gt;"<BR>end if <BR>response.write "&lt; /FORM&gt;"<BR>End 
      if<BR>%&gt;<BR>&lt; % End Sub 
      %&gt;<BR><BR>  相信大家都应该能完全读懂上面的程序,因此作者就不在此详细解释了。值得注意的是在这段程序中运用了一个小技巧 &lt; 
      INPUT TYPE="HIDDEN" NAME="pageno" VALUE="&lt; % =PageNo 
      %&gt;"&gt;,这是用来在每次调用该 ASP 文件时传递数据的“暗道”,由于我们需要在每次调用程序时传递代表当前页码的参数,可能大家会想到使用 
      session,但是从节省系统资源和通用性来讲,用这样一个隐藏的 form 
      来传递数据将会达到更好的效果。<BR><BR>  好了,又到了说再见的时候了,如果你没完全看懂本篇中所列的程序,那你必须加把油,看一看 
      VbScript 的语法;如果你还有某些疑问,可以“妹儿”我,我将尽力解答;如果你有什么更好的建议也千万要来信告诉我哦 :) 
      <P align=center><A 
      href="http://chinese.pku.edu.cn/netstudy/aspteach/asp15.htm">上一节</A> <A 
      href="http://chinese.pku.edu.cn/netstudy/aspteach/asp17.htm">下一节</A></P>
      <P align=center><A 
      href="http://chinese.pku.edu.cn/netstudy/aspteach/index.asp">在线教程首页</A></P></TD></TR></TBODY></TABLE></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -