对数据库中的记录用上一条下一条显示(一)

若要让RecordSet移动到上一条下一条的位置,让我们先学会以下RecordSet对象的属性和方法:

BOF属性:当前游标指到RecordSet的第一条记录。
EOF属性:当前游标指到RecordSet的最后一条记录。
Move方法:移动游标到RecordSet中的某一个记录。
AbsolutePosition属性:当前游标在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算起。
AbsolutePosition属性

若您需要确定当前游标在RecordSet中的位置,您可以用AbsolutePosition属性。

AbsolutePosition属性的数值为当前游标相对于第一条的位置,由1算起,即第一条的AbsolutePosition为1。

然而,不要误以为AbsolutePosition是资料记录的编号,如果当前RecordSet处于未定的状态,则

AsolutePosition的数值为�1。

另外,在存取RecordSet时,无法保证RecordSet每次都以同样的顺序出现。

若要启用AbsolutePosition,必须先设定为使用用户端cursor,asp码如下:

rs2.CursorLocation = 3

一、Move/AbsolutePosition的例子

让我们看一个於ASP程式码当中使用Move/AbsolutePosition做到上一条下一条记录功能的例子。

譬如ASP程式码rs14.asp如下:

 1   
 2  
 3Set conn1 = Server.CreateObject("ADODB.Connection")   
 4  
 5conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"   
 6  
 7Set rs2 = Server.CreateObject("ADODB.Recordset")   
 8  
 9SqlStr = "SELECT * From 着作"   
10  
11'Enable AbsolutePosition   
12  
13rs2.CursorLocation = 3 'adUseClient   
14  
15rs2.Open SqlStr,conn1,1,1   
16  
17if Request("sel") = "prev" then   
18  
19Session("position") = Session("position") - 1   
20  
21rs2.Move Session("position")   
22  
23elseif Request("sel") = "next" then   
24  
25Session("position") = Session("position") + 1   
26  
27rs2.Move Session("position")   
28  
29else   
30  
31Session("position") = 0   
32  
33end if   
34  
1 = Session("position") 
 1<table border="0" cellpadding="5" colspan="8">
 2<tr>
 3<td align="CENTER" bgcolor="#008080"><font color="#FFFFFF">书名</font></td>
 4<td align="CENTER" bgcolor="#008080"><font color="#FFFFFF">出版</font></td>
 5<td align="CENTER" bgcolor="#008080"><font color="#FFFFFF">图片</font></td>
 6<td align="CENTER" bgcolor="#008080"><font color="#FFFFFF">简介</font></td>
 7<td align="CENTER" bgcolor="#008080"><font color="#FFFFFF">AbsolutePosition</font></td>
 8<tr>
 9<td align="CENTER" bgcolor="f7efde">```
10= rs2("书名") 
11```</td>
12<td align="CENTER" bgcolor="f7efde">```
13= rs2("出版") 
14```</td>
15<td align="CENTER" bgcolor="f7efde">```
16= rs2("图片") 
17```</td>
18<td align="CENTER" bgcolor="f7efde">```
19= rs2("简介") 
20```</td>
21<td align="CENTER" bgcolor="f7efde">```
22= rs2.AbsolutePosition 
23```</td>
24</tr>
25</tr></table>
1 if Session("position") > 0 then 
1<a href="rs14.asp?sel=prev">上一条</a>
1 end if 
1 if Session("position") < rs2.RecordCount -1 then 
1<a href="rs14.asp?sel=next">下一条</a>
1 end if 
1 rs2.Close 

以上的 ASP程式码rs14.asp,在用户端使用浏览器,浏览执行的结果,显示上一条下一条的功能。

由Session("position")储存这个使用者的RecordSet游标位置,当按下 [上一条] 超级连接时,由

1<a href="rs14.asp?sel=prev">上一条</a>

,将sel设定为prev,并重新执行rs14.asp的asp码。由以下的程式部份,

将Session("position")减一:

if Request("sel") = "prev" then

Session("position") = Session("position") - 1

rs2.Move Session("position")

elseif Request("sel") = "next" then

Session("position") = Session("position") + 1

rs2.Move Session("position")

else

Session("position") = 0

end if

然后使用Move Session("position")方法,将移动游标到第Session("position")个记录,第一条记录的Session("position")值为0。

当按下 [下一条] 超级连接时,由

1<a href="rs14.asp?sel=next">下一条</a>

,将sel设定为next,并重新执行rs14.asp的asp码。由以上的程式部份,将Session("position")加一,然后使用Move Session("position")方法,将移动指标到第Session("position")个记录。

AbsolutePosition部份,首先由rs2.CursorLocation = 3设定为使用用户端cursor,以启用AbsolutePosition,即可由``` = rs2.AbsolutePosition

1  
2为了判断是否要显示 [上一条] [下一条] 超级连接,由以下的程式部份:   
3  

if Session("position") > 0 then

上一条

end if

1  

if Session("position") < rs2.RecordCount -1 then

下一条

end if

1  
2就可以使用if Session("position") &gt; 0、if Session("position") &lt; rs2.RecordCount -1,比较当前的位置Session("position")和第一条0、第末条RecordCount -1的位置,来判断是否要显示 [上一条] [下一条] 的超级连接。
Published At
Categories with Web编程
Tagged with
comments powered by Disqus