This example demonstrates the CompareBookmarks method. The relative value of bookmarks is seldom needed unless a particular bookmark is somehow special.
Designate a random row of a Recordset derived from the Authors table as the target of a search. Then display the position of each row relative to that target.
'BeginCompareBookmarksVB Public Sub CompareBookmarksX() Dim rst As ADODB.Recordset Dim count As Integer Dim target As Variant Dim result As Long Dim strAns As String Dim strTitle As String strTitle = "CompareBookmarks Example" Set rst = New ADODB.Recordset rst.Open "SELECT * FROM Authors", _ "DSN=Pubs;Provider=MSDASQL; uid=sa;pwd=;", _ adOpenStatic, adLockReadOnly, adCmdText count = rst.RecordCount Debug.Print "Rows in the Recordset = "; count If count = 0 Then Exit Sub 'Exit if an empty recordset Randomize count = (Int(count * Rnd)) 'Get position between 0 and count-1 Debug.Print "Randomly chosen row position = "; count rst.Move count, adBookmarkFirst 'Move row to random position target = rst.Bookmark 'Remember the mystery row. count = 0 rst.MoveFirst Do While Not rst.EOF 'Loop through recordset result = rst.CompareBookmarks(rst.Bookmark, target) If result = adCompareNotEqual Then Debug.Print "Row "; count; ": Bookmarks are not equal." ElseIf result = adCompareNotComparable Then Debug.Print "Row "; count; ": Bookmarks are not comparable." Else Select Case result Case adCompareLessThan strAns = "less than" Case adCompareEqual strAns = "equal to" Case adCompareGreaterThan strAns = "greater than" Case Else strAns = "in error comparing to" End Select Debug.Print "Row position " & count & " is " & strAns & _ " the target." End If count = count + 1 rst.MoveNext Loop rst.Close End Sub 'EndCompareBookmarksVB
CompareBookmarks Method | CompareEnum | Recordset Object