返回唯一标识 Recordset 对象中当前记录的书签,或者将 Recordset 对象的当前记录设置为由有效书签所标识的记录。
设置和返回值
设置或返回计算有效书签的变体型表达式。
说明
使用 Bookmark 属性可保存当前记录的位置并随时返回到该记录。书签只能在支持书签功能的 Recordset 对象中使用。
打开 Recordset 对象时,其每个记录都有唯一的书签。要保存当前记录的书签,请将 Bookmark 属性的值赋给一个变量。移动到其他记录后要快速返回到该记录,请将该 Recordset 对象的 Bookmark 属性设置为该变量的值。
用户可能无法查看书签的值,也同样无法对书签直接进行比较(指向同一记录的两个书签的值可能不同)。
如果使用 Clone 方法创建 Recordset 的一个副本,则原始的和复制的 Recordset 对象 Bookmark 属性设置相同并可以替换使用。但是,无法替换使用不同 Recordset 对象的书签,即使这些书签是通过同一数据源或命令创建的。
远程数据服务用法 在客户端 (ADOR) Recordset 对象上使用时,Bookmark 属性始终有效。
BOF、EOF 和 Bookmark 属性范例
该范例使用 BOF 和 EOF 属性,在用户试图移过 Recordset 的第一个和最后一个记录时显示一条信息。它通过 Bookmark 属性使用户对 Recordset 中的记录进行标记,稍后再返回给它。
Public Sub BOFX() Dim rstPublishers As ADODB.Recordset Dim strCnn As String Dim strMessage As String Dim intCommand As Integer Dim varBookmark As Variant ' 使用来自出版商表的数据打开记录集。 strCnn = "Provider=sqloledb;" & _ "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; " Set rstPublishers = New ADODB.Recordset rstPublishers.CursorType = adOpenStatic ' 使用客户端游标启用 AbsolutePosition 属性。 rstPublishers.CursorLocation = adUseClient rstPublishers.Open "SELECT pub_id, pub_name FROM publishers " & _ "ORDER BY pub_name", strCnn, , , adCmdText rstPublishers.MoveFirst Do While True ' 显示关于当前记录的信息并让用户输入。 strMessage = "Publisher: " & rstPublishers!pub_name & _ vbCr & "(record " & rstPublishers.AbsolutePosition & _ " of " & rstPublishers.RecordCount & ")" & vbCr & vbCr & _ "Enter command:" & vbCr & _ "[1 - next / 2 - previous /" & vbCr & _ "3 - set bookmark / 4 - go to bookmark]" intCommand = Val(InputBox(strMessage)) Select Case intCommand ' 向前或向后移动,捕获 BOF 或 EOF。 Case 1 rstPublishers.MoveNext If rstPublishers.EOF Then MsgBox "Moving past the last record." & _ vbCr & "Try again." rstPublishers.MoveLast End If Case 2 rstPublishers.MovePrevious If rstPublishers.BOF Then MsgBox "Moving past the first record." & _ vbCr & "Try again." rstPublishers.MoveFirst End If ' 保存当前记录的书签。 Case 3 varBookmark = rstPublishers.Bookmark ' 转到由存储的书签所指示的记录。 Case 4 If IsEmpty(varBookmark) Then MsgBox "No Bookmark set!" Else rstPublishers.Bookmark = varBookmark End If Case Else Exit Do End Select Loop rstPublishers.Close End Sub
该范例使用 Bookmark 和 Filter 属性创建记录集的限定视图,将只允许访问书签数组所引用的记录。
Public Sub BOFX2() Dim rs As New ADODB.Recordset Dim bmk(10) rs.CursorLocation = adUseClient rs.ActiveConnection = "Provider=sqloledb;" & _ "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=;" rs.Open "select * from authors", , adOpenStatic, adLockBatchOptimistic Debug.Print "Number of records before filtering: ", rs.RecordCount ii = 0 While rs.EOF <> True And ii < 11 bmk(ii) = rs.Bookmark ii = ii + 1 rs.Move 2 Wend rs.Filter = bmk Debug.Print "Number of records after filtering: ", rs.RecordCount rs.MoveFirst While rs.EOF <> True Debug.Print rs.AbsolutePosition, rs("au_lname") rs.MoveNext Wend End Sub
本文地址:http://com.8s8s.com/it/it6519.htm