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.