[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Anzahl Datensätze in Recordset-Objekten

Sprache / Programm: Access ab Version 95
Beschreibung

Die Funktionen ermitteln die Anzahl der Datensätze in einer Tabelle oder Abfrage, ohne den Zeiger zu verschieben.

Die drei Prozeduren unterscheiden sich durch die Art der übergebenen Datentypen (String oder RecordSet-Objekt), die dritte Variante kann auch in den Tabellen fremder Datenbanken die Datensätze zählen.

VBA-Quelltext
'*** Variante 1
Public Function AnzahlDatensätze(RecSet As DAO.Recordset) As Long
    Dim LeseZeichen As String
    If RecSet.Type = dbOpenTable Then
        AnzahlDatensätze = RecSet.RecordCount
    ElseIf RecSet.RecordCount = 0 Then
        AnzahlDatensätze = 0
    Else
        LeseZeichen = RecSet.Bookmark
        RecSet.MoveLast
        AnzahlDatensätze = RecSet.RecordCount
        RecSet.Bookmark = LeseZeichen
    End If
End Function

'*** Variante 2
Public Function AnzahlDatensätze(RecSet As String) As Long
    AnzahlDatensätze = DCount("*", RecSet)
End Function

'*** Variante 3
Public Function AnzahlDatensätze(RecSet As String, Optional DatenBank As String = "") As Long
    Dim DB As DAO.Database
    If DatenBank = "" Then
        Set DB = CurrentDb
    ElseIf Dir$(DatenBank, vbHidden + vbSystem + vbReadOnly) = "" Then
        AnzahlDatensätze = 0
        Exit Function
    Else
        Set DB = OpenDatabase(DatenBank)
    End If
    AnzahlDatensätze = DB.OpenRecordset("SELECT COUNT(*) FROM [" & RecSet & "]").Fields(0).Value
End Function
Argumente der Funktion/Prozedur

Variante 1:

RecSet

Tabelle oder Abfrage als Recordset-Objekt.

Variante 2:

RecSet

Name einer Tabelle oder Abfrage als String

Variante 3:

RecSet

Name einer Tabelle oder Abfrage als String

DatenBank

Vollständiger Pfad und Dateiname einer externen Datenbank. Falls keine Datenbank angegeben wird, sucht die Funktion in der eigenen Datenbank. Wenn die externe Datenbank nicht existiert, werden 0 Datensätze zurückgegeben.
Verwendete Variable

Lesezeichen

Speichert den Zeiger auf den aktuellen Datensatz.

DB

Objektreferenz auf die Datenbank, in der sich die zu zählenden Datensätze befinden
Rückgabewert

Anzahl der Datensätze.

Anwendungsbeispiel(e)...

Über die Systemdatenbank innerhalb einer Access-MDB können indirekt auch andere Dinge gezählt werden, z.B. die Anzahl der Beziehungen. Die folgende Anweisung übergibt die Anzahl der Beziehungen in einer Datenbank an die Variable 'Beziehungen'

Beziehungen = AnzahlDatensätze("MSysRelationships")

Hinweis

Ein einfaches RecordCount funktioniert nicht immer, vor allem, wenn das Recordset von Typ 'Snapshot' ist, muss erst einmal zum letzten Datensatz gesprungen werden.

Die Varianten zählen auch Datensätze, die NULL enthalten.

Anwendungsgebiete, Fehler und Warnungen

Verwendet die DAO Objektbibliothek. Ab Access 2000 muss diese explizit im VBA-Editor über 'Extras' -> 'Verweise' als 'Microsoft DAO 3.6' (oder höher) eingebunden werden und vor die 'Microsoft ADO 2.1' (oder höher) Bibliothek gesetzt werden.