Bookmark and Bookmarkable Properties Example

This example uses the Bookmark and Bookmarkable properties to let the user flag a record in a Recordset and return to it later.

Sub BookmarkX()

   Dim dbsNorthwind As Database
   Dim rstCategories As Recordset
   Dim strMessage As String
   Dim intCommand As Integer
   Dim varBookmark As Variant

   Set dbsNorthwind = OpenDatabase("Northwind.mdb")
   Set rstCategories = _
      dbsNorthwind.OpenRecordset("Categories", _
      dbOpenSnapshot)

   With rstCategories

      If .Bookmarkable = False Then
         Debug.Print "Recordset is not Bookmarkable!"
      Else
         ' Populate Recordset.
         .MoveLast
         .MoveFirst

         Do While True
            ' Show information about current record and get 
            ' user input.
            strMessage = "Category: " & !CategoryName & _
               " (record " & (.AbsolutePosition + 1) & _
               " of " & .RecordCount & ")" & vbCr & _
               "Enter command:" & vbCr & _
               "[1 - next / 2 - previous /" & vbCr & _
               "3 - set bookmark / 4 - go to bookmark]"
            intCommand = Val(InputBox(strMessage))

            Select Case intCommand
               ' Move forward or backward, trapping for BOF 
               ' or EOF.
               Case 1
                  .MoveNext
                  If .EOF Then .MoveLast
               Case 2
                  .MovePrevious
                  If .BOF Then .MoveFirst

               ' Store the bookmark of the current record.
               Case 3
                  varBookmark = .Bookmark

               ' Go to the record indicated by the stored 
               ' bookmark.
               Case 4
                  If IsEmpty(varBookmark) Then
                     MsgBox "No Bookmark set!"
                  Else
                     .Bookmark = varBookmark
                  End If

               Case Else
                  Exit Do
            End Select

         Loop

      End If

      .Close
   End With

   dbsNorthwind.Close

End Sub