Freigeben über


Recordset.Bookmark-Eigenschaft (DAO)

Gilt für: Access 2013, Office 2013

Legt eine Textmarke fest oder gibt sie zurück. Sie identifiziert den aktuellen Datensatz eindeutig in einem Recordset-Objekt.

Syntax

Ausdruck .Bookmark

Ausdruck Eine Variable, die ein Recordset-Objekt darstellt.

Bemerkungen

Bei einem vollständig auf Microsoft Access-Datenbankmodultabellen basierenden Recordset-Objekt lautet der Wert der Bookmarkable-Eigenschaft True und Sie können die Bookmark-Eigenschaft mit diesem Recordset verwenden. Andere Datenbank-Produkte unterstützen Textmarken möglicherweise nicht. Sie können Textmarken nicht in beliebigen Recordset -Objekten verwenden, die auf einer verknüpften Paradox-Tabelle basieren, die keinen primären Schlüssel besitzt.

Beim Erstellen oder Öffnen eines Recordset -Objekts besitzt jeder Datensatz bereits eine eindeutige Textmarke. Weisen Sie der Bookmark-Eigenschaft eine Variable zu, um die Textmarke für den aktuellen Datensatz zu speichern. Um jederzeit schnell zu diesem Datensatz zurückkehren zu können, nachdem Sie zu einem anderen Datensatz gewechselt haben, legen Sie die Bookmark-Eigenschaft des Recordset-Objekts auf den Wert dieser Variablen fest.

Es gibt keine Begrenzung für die Anzahl der verwendbaren Lesezeichen. Um das Lesezeichen eines anderen Datensatzes als des aktuellen Datensatzes zu speichern, müssen Sie zum gewünschten Datensatz wechseln und den Wert der Bookmark-Eigenschaft in einer String-Variablen speichern, die diesen Datensatz identifiziert.

Um sicherzustellen, dass das Recordset-Objekt Bookmarks unterstützt, überprüfen Sie den Wert der Bookmarkable-Eigenschaft vor der Verwendung der Bookmark-Eigenschaft. Wenn die Bookmarkable-Eigenschaft den Wert False hat, unterstützt das Recordset-Objekt keine Lesezeichen, und die Verwendung der Bookmark-Eigenschaft führt zu einem auffangbaren Fehler.

Wenn Sie mithilfe der Clone -Methode eine Kopie eines Recordset-Objekts erstellen, sind die Werte der Bookmark-Eigenschaft für das Original und die Kopie des Recordset-Objekts identisch und austauschbar. Es ist jedoch nicht möglich, Lesezeichen unterschiedlicher Recordset-Objekte auszutauschen, selbst wenn sie mithilfe desselben Objekts oder derselben SQL-Anweisung erstellt wurden.

Wenn Sie für die Bookmark-Eigenschaft einen Wert festlegen, der einen gelöschten Datensatz darstellt, tritt ein auffangbarer Fehler auf.

Der Wert der Bookmark-Eigenschaft entspricht nicht einer Datensatzanzahl.

Beispiel

In diesem Beispiel werden die Bookmark- und Bookmarkable-Eigenschaften verwendet, damit Benutzer einen Eintrag in einem Recordset kennzeichnen und später zu ihm zurückkehren können.

    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 

In diesem Beispiel wird die LastModified-Eigenschaft verwenden, um den aktuellen Datensatzzeiger zu einem geänderten und neu erstellten Datensatz zu verschieben.

    Sub LastModifiedX() 
     
     Dim dbsNorthwind As Database 
     Dim rstEmployees As Recordset 
     Dim strFirst As String 
     Dim strLast As String 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     Set rstEmployees = _ 
     dbsNorthwind.OpenRecordset("Employees", _ 
     dbOpenDynaset) 
     
     With rstEmployees 
     ' Store current data. 
     strFirst = !FirstName 
     strLast = !LastName 
     ' Change data in current record. 
     .Edit 
     !FirstName = "Julie" 
     !LastName = "Warren" 
     .Update 
     ' Move current record pointer to the most recently 
     ' changed or added record. 
     .Bookmark = .LastModified 
     Debug.Print _ 
     "Data in LastModified record after Edit: " & _ 
     !FirstName & " " & !LastName 
     
     ' Restore original data because this is a demonstration. 
     .Edit 
     !FirstName = strFirst 
     !LastName = strLast 
     .Update 
     
     ' Add new record. 
     .AddNew 
     !FirstName = "Roger" 
     !LastName = "Harui" 
     .Update 
     ' Move current record pointer to the most recently 
     ' changed or added record. 
     .Bookmark = .LastModified 
     Debug.Print _ 
     "Data in LastModified record after AddNew: " & _ 
     !FirstName & " " & !LastName 
     
     ' Delete new record because this is a demonstration. 
     .Delete 
     .Close 
     End With 
     
     dbsNorthwind.Close 
     
    End Sub