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