Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

9.7.5 Aktuelle Position des Datensatzzeigers ermitteln

9.7.6 Anzahl der Datensätze ermitteln

Das Ermitteln der in einem Recordset enthaltenen Anzahl an Datensätzen ist nicht so trivial, wie man es sich vielleicht vorstellt. Zwar gibt es eine Eigenschaft namens RecordCount, aber diese kommt nicht immer zum richtigen Ergebnis.

Die folgende Prozedur liefert beispielsweise den Wert 1 zurück, obwohl die zugrunde liegende Tabelle wesentlich mehr Datensätze enthält:

Public Sub AnzahlDatensaetze_Falsch()
    ...
    Set rst = db.OpenRecordset("tblMitarbeiter", dbOpenDynaset)
    Debug.Print rst. RecordCount
    ...
End Sub

Listing 9.29: Diese Routine liefert die falsche Anzahl Datensätze zurück

Der Grund für das falsche Ergebnis liegt darin, dass die RecordCount-Eigenschaft offenbar nur die Datensätze zählt, die bereits einmal mit dem Datensatzzeiger »überfahren« wurden. Das ist zumindest nachweisbar, wenn man per MoveLast-Methode auf den letzten Datensatz springt und dann die Datensätze zählt. Folgende Routine gibt die korrekte Anzahl aus:

Public Sub AnzahlDatensaetze_Richtig()
    ...
    Set rst = db.OpenRecordset("tblMitarbeiter", dbOpenDynaset)
    rst.MoveLast
    Debug.Print rst.RecordCount
    ...
End Sub

Listing 9.30: Erst ein Sprung auf den letzten Datensatz liefert die richtige Anzahl

Zwischen zwei Zählungen sollten Sie in jedem Fall die Requery-Methode des Recordset- beziehungsweise Recordset2-Objekts verwenden, um den Datenbestand zu aktualisieren. Anderenfalls laufen Sie Gefahr, beim zwischenzeitlichen Löschen oder Hinzufügen von Datensätzen die alte Anzahl auszugeben. Die Requery-Methode sorgt für ein erneutes Einlesen der zugrunde liegenden Daten. In der folgenden Routine wird die Anzahl in beiden Fällen korrekt ausgegeben. Beachten Sie, dass die Requery-Methode vor dem Sprung auf den letzten Datensatz ausgeführt werden muss!

Public Sub AnzahlDatensaetze_MitAktualisierung()
    ...
    Set rst = db.OpenRecordset("tblMitarbeiter", dbOpenDynaset)
    rst.MoveLast

    Debug.Print rst.RecordCount
    db.Execute "INSERT INTO tblMitarbeiter(Vorname, Nachname) " _
        & "VALUES('Hans','Wurst')"
    rst.Requery
    rst.MoveLast

    Debug.Print rst.RecordCount
    ...
End Sub

Listing 9.31: Zählen der Datensatzanzahl vor und nach dem Ändern des Datenbestands

Die ersten beiden Beispiele beschäftigen sich mit Dynaset-Recordsets. Mit Table-Recordsets müssen Sie nicht erst auf den letzten Datensatz springen, um die korrekte Anzahl der enthaltenen Datensätze zu bestimmen. Hier reicht ein einfaches RecordCount:

Public Sub AnzahlDatensaetze_Table()
    ...
    Set rst = db.OpenRecordset("tblMitarbeiter", dbOpenTable)
    Debug.Print rst.RecordCount
    ...
End Sub

Listing 9.32: Beim Table-Recordset funktioniert RecordCount richtig

Zusätzlich wird hier deutlich, dass ein Table-Recordset direkt an die Tabelle gebunden ist: Wenn Sie die obige Prozedur zweimal die Anzahl der Datensätze ausgeben lassen und zwischendurch einen Datensatz entfernen, zeigt die zweite Ausgabe direkt die korrigierte Anzahl an.

Bleibt noch das Snapshot-Recordset: Auch hier ist wieder der Sprung auf den letzten Datensatz nötig, um die korrekte Anzahl der Datensätze zu ermitteln. Da sich das Snapshot-Recordset nicht aktualisieren lässt, liefert RecordCount immer die Anzahl der Datensätze beim Anlegen der Datensatzgruppe zurück. Am schnellsten ermitteln Sie die Anzahl der Datensätze mit dem folgenden Listing:

Public Sub AnzahlDatensaetze_Table_Schnell()

    Dim db As DAO.Database

    Set db = CurrentDb

    Debug.Print db.TableDefs("tblMitarbeiter").RecordCount

    Set db = Nothing

End Sub

Listing 9.33: Schnelle Ermittlung der Datensatzanzahl

Nächster Abschnitt:

9.7.7 Daten aus Datensätzen ausgeben

© 2006-2008 André Minhorst Alle Rechte vorbehalten.