Zählen der Anzahl von Datensätzen in einem DAO-Recordset
Möglicherweise möchten Sie die Anzahl der Datensätze in einem Recordset-Objekt kennen. Sie möchten z. B. ein Formular erstellen, das zeigt, wie viele Datensätze in jeder der Tabellen in einer Datenbank enthalten sind. Oder Sie möchten das Aussehen eines Formulars oder Berichts basierend auf der Anzahl der enthaltenen Datensätze ändern.
Die RecordCount-Eigenschaft enthält die Anzahl von Datensätzen in einem Recordset-Tabellentyp oder die Gesamtanzahl der Datensätze, auf die in einem Recordset vom Dynaset- oder Momentaufnahmetyp zugegriffen wird. Bei einem Recordset -Objekt ohne Datensätze hat die RecordCount -Eigenschaft den Wert 0 (null).
Hinweis
Der Wert der RecordCount-Eigenschaft entspricht der Anzahl der Datensätze, auf die tatsächlich zugegriffen wurde. Wenn Sie z. B. zuerst ein Dynaset- oder Snapshot-Recordset erstellen, haben Sie nur auf einen Datensatz zugegriffen (ihn besucht). Wenn Sie die RecordCount-Eigenschaft unmittelbar nach dem Erstellen des Dynaset- oder Snapshot-Recordsets überprüfen (vorausgesetzt, es verfügt über mindestens einen Datensatz), ist der Wert 1. Um alle Datensätze zu besuchen, verwenden Sie die MoveLast-Methode unmittelbar nach dem Öffnen des Recordset und dann MoveFirst , um zum ersten Datensatz zurückzukehren. Dieser Vorgang wird nicht automatisch durchgeführt, da er möglicherweise langsam ist, insbesondere bei umfangreichen Resultsets.
Wenn Sie ein Recordset-Objekt vom Typ Tabelle öffnen, rufen Sie effektiv alle Datensätze in der zugrunde liegenden Tabelle auf, und der Wert der RecordCount-Eigenschaft entspricht der Anzahl der Datensätze in der Tabelle, sobald das Recordset-Objekt geöffnet wird.
Abgebrochene Transaktionen können dazu führen, dass der Wert der RecordCount-Eigenschaft in einigen Mehrbenutzersituationen veraltet ist. Durch das Komprimieren der Datenbank wird die Datensatzanzahl der Tabelle auf den richtigen Wert wiederhergestellt.
Das folgende Codebeispiel erstellt ein Recordset-Objekt vom Typ "Snapshot" und bestimmt dann die Anzahl der Datensätze im Recordset.
Function FindRecordCount(strSQL As String) As Long
Dim dbsNorthwind As DAO.Database
Dim rstRecords As DAO.Recordset
On Error GoTo ErrorHandler
Set dbsNorthwind = CurrentDb
Set rstRecords = dbsNorthwind.OpenRecordset(strSQL)
If rstRecords.EOF Then
FindRecordCount = 0
Else
rstRecords.MoveLast
FindRecordCount = rstRecords.RecordCount
End If
rstRecords.Close
dbsNorthwind.Close
Set rstRecords = Nothing
Set dbsNorthwind = Nothing
Exit Function
ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function
Wenn Ihre Anwendung Datensätze in einem Recordset vom Typ "Dynaset" löscht, verringert sich der Wert RecordCount-Eigenschaft. In einer Mehrbenutzerumgebung spiegelt sich das Löschen von Datensätzen durch andere Benutzer erst dann im Wert der RecordCount-Eigenschaft wider, wenn ein gelöschter Datensatz als aktueller Datensatz ausgewählt wird. Zu diesem Zeitpunkt verringert sich die Einstellung der RecordCount -Eigenschaft um eins.
Durch Verwenden der Requery -Methode für ein Recordset, gefolgt von der MoveLast -Methode, wird die RecordCount -Eigenschaft auf die aktuelle Gesamtanzahl an Datensätzen im Recordset festgelegt.
Ein Recordset-Objekt vom Typ Momentaufnahme ist statisch. Der Wert seiner RecordCount-Eigenschaft ändert sich nicht, wenn Sie Datensätze in der zugrunde liegenden Tabelle der Momentaufnahme hinzufügen oder löschen.
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Feedback senden und anzeigen für