ADO2.1中Bookmark 属性

王朝vb·作者佚名  2006-01-08
宽屏版  字体: |||超大  

返回唯一标识 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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有