若要让RecordSet移动到上一条下一条的位置,让我们先学会以下RecordSet对象的属性和方法:
BOF属性:当前游标指到RecordSet的第一条记录。
EOF属性:当前游标指到RecordSet的最后一条记录。
Move方法:移动游标到RecordSet中的某一个记录。
A olutePosition属性:当前游标在RecordSet中的位置。
bookmark(书签)属性:对RecordSet的一条记录做一个记号。
详细介绍如下:
BOF与EOF属性
可以编写程式码来检查BOF与EOF属性,来得知当前游标RecordSet的位置:
BOF与EOF都为False:表示游标位于RecordSet当中。
BOF为True:当前游标指到RecordSet的第一条记录。
EOF为True:当前游标指到RecordSet的最后一条记录。
BOF与EOF都为True:在RecordSet里没有任何的资料记录。
Move方法
您可以用Move方法移动游标到RecordSet中的某一条记录:
MoveFirst方法:移至第一条记录。
MoveLast方法:移至最后一条记录。
MoveNext方法:移至下一条记录。
MovePrevious方法:移至上一条记录。
Move [n]方法:移动游标到第n条记录,n由0算起。
A olutePosition属性
若您需要确定当前游标在RecordSet中的位置,您可以用A olutePosition属性。
A olutePosition属性的数值为当前游标相对于第一条的位置,由1算起,即第一条的A olutePosition为1。
然而,不要误以为A olutePosition是资料记录的编号,如果当前RecordSet处于未定的状态,则
AsolutePosition的数值为&am #0;1。
另外,在存取RecordSet时,无法保证RecordSet每次都以同样的顺序出现。
若要启用A olutePosition,必须先设定为使用用户端cursor,a 码如下:
rs2.CursorLocation = 3
一、Move/A olutePosition的例子
让我们看一个於A 程式码当中使用Move/A olutePosition做到上一条下一条记录功能的例子。
譬如A 程式码rs14.a 如下:
<%
Set co 1 = Server.CreateObject("ADODB.Co ectio quot;)
co 1.Open "DBQ=" am Server.Ma ath(" to amp.md quot;) &am quot Driver={Microsoft Acce Driver (*.mdb)};DriverId=25;FIL=MS Acce quot;
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = " ELECT * From 着作"
'Enable A olutePosition
rs2.CursorLocation = 3 'adUseClient
rs2.Open SqlStr,co 1,1,1
if Request(" el") = " rev" then
Se ion(" ositio quot;) = Se ion(" ositio quot;) - 1
rs2.Move Se ion(" ositio quot;)
elseif Request(" el") = " ext" then
Se ion(" ositio quot;) = Se ion(" ositio quot;) + 1
rs2.Move Se ion(" ositio quot;)
else
Se ion(" ositio quot;) = 0
end if
%>
<% = Se ion(" ositio quot;) %>
<TABLE COL AN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#008080" gt lt;FONT COLOR="#FFFFFF" gt;书名</FONT> lt;/TD>
<TD ALIGN=CENTER BGCOLOR="#008080" gt lt;FONT COLOR="#FFFFFF" gt;出版</FONT> lt;/TD>
<TD ALIGN=CENTER BGCOLOR="#008080" gt lt;FONT COLOR="#FFFFFF" gt;图片</FONT> lt;/TD>
<TD ALIGN=CENTER BGCOLOR="#008080" gt lt;FONT COLOR="#FFFFFF" gt;简介</FONT> lt;/TD>
<TD ALIGN=CENTER BGCOLOR="#008080" gt lt;FONT COLOR="#FFFFFF" gt;A olutePositio lt;/FONT> lt;/TD>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER> lt;%= rs2("书名") %> lt;/TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER> lt;%= rs2("出版") %> lt;/TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER> lt;%= rs2("图片") %> lt;/TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER> lt;%= rs2("简介") %> lt;/TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER> lt;%= rs2.A olutePosition %> lt;/TD>
</TR>
</TABLE>
<% if Se ion(" ositio quot;) > 0 then %>
<A href=rs14.a ?sel=prev>上一条</A>
<% end if %>
<% if Se ion(" ositio quot;) < rs2.RecordCount -1 then %>
<A href=rs14.a ?sel=next>下一条</A>
<% end if %>
<% rs2.Close %>
以上的 A 程式码rs14.a ,在用户端使用浏览器,浏览执行的结果,显示上一条下一条的功能。
由Se ion(" ositio quot;)储存这个使用者的RecordSet游标位置,当按下 [上一条] 超级连接时,由<A href=rs14.a ?sel=prev>上一条</A>,将sel设定为prev,并重新执行rs14.a 的a 码。由以下的程式部份,
将Se ion(" ositio quot;)减一:
if Request(" el") = " rev" then
Se ion(" ositio quot;) = Se ion(" ositio quot;) - 1
rs2.Move Se ion(" ositio quot;)
elseif Request(" el") = " ext" then
Se ion(" ositio quot;) = Se ion(" ositio quot;) + 1
rs2.Move Se ion(" ositio quot;)
else
Se ion(" ositio quot;) = 0
end if
然后使用Move Se ion(" ositio quot;)方法,将移动游标到第Se ion(" ositio quot;)个记录,第一条记录的Se ion(" ositio quot;)值为0。
当按下 [下一条] 超级连接时,由<A href=rs14.a ?sel=next>下一条</A>,将sel设定为next,并重新执行rs14.a 的a 码。由以上的程式部份,将Se ion(" ositio quot;)加一,然后使用Move Se ion(" ositio quot;)方法,将移动指标到第Se ion(" ositio quot;)个记录。
A olutePosition部份,首先由rs2.CursorLocation = 3设定为使用用户端cursor,以启用A olutePosition,即可由<%= rs2.A olutePosition %>显示A olutePosition的值。
为了判断是否要显示 [上一条] [下一条] 超级连接,由以下的程式部份:
<% if Se ion(" ositio quot;) > 0 then %>
<A href=rs14.a ?sel=prev>上一条</A>
<% end if %>
<% if Se ion(" ositio quot;) < rs2.RecordCount -1 then %>
<A href=rs14.a ?sel=next>下一条</A>
<% end if %>
就可以使用if Se ion(" ositio quot;) > 0、if Se ion(" ositio quot;) < rs2.RecordCount -1,比较当前的位置Se ion(" ositio quot;)和第一条0、第末条RecordCount -1的位置,来判断是否要显示 [上一条] [下一条] 的超级连接。
an>


