Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Aktionsabfragen: Betroffene Datenstze zhlen

Aktionsabfragen sind ruckzuck ausgefhrt: Schnell ein DoCmd.RunSQL oder die Excecute-Methode mit der gewnschten Aktionsabfrage fttern, und fertig. Die wenigsten wissen aber, wie Sie die Ergebnisse solcher Abfragen per VBA herausfinden - zum Beispiel, ob es einen Fehler gab, wieviele Datenstze betroffen sind und so weiter. Diese Mglichkeiten bietet nur die Execute-Methode, wie vorliegender Beitrag beschreibt.

Aktionsabfragen mit der Execute-Methode

Eine Beispielfunktion fr das Lschen eines Datensatzes finden Sie in folgendem Quellcode. Dabei wird die im Parameter der Funktion angegebene SQL-Aktionsabfrage ausgefhrt.

Die Execute-Methode enthlt den Parameter dbFailOnError, was bedeutet, dass die Aktionsabfrage beim Auftreten eines Fehlers nicht durchgefhrt wird. Zustzlich ist in dem Fall der Fehler per VBA auslesbar, was in der Debug.Print-Anweisung in der Fehlerbehandlung passiert.

Die Eigenschaft RecordsAffected liefert die Anzahl der betroffenen Datenstze zurck.

Public Function AktionsabfrageAusfuehren(strSQL) As Integer

    Dim db As DAO.Database

    On Error GoTo AktionsabfrageAusfuehren_Err

    Set db = CurrentDb

    db.Execute strSQL, dbFailOnError

    AktionsabfrageAusfuehren = db.RecordsAffected

AktionsabfrageAusfuehren_Exit:

    Set db = Nothing

    Exit Function

AktionsabfrageAusfuehren_Err:

    Debug.Print Err.Number, Err.Description

    GoTo AktionsabfrageAusfuehren_Exit

End Function

Wenn Sie die Funktion mit dem folgenden Aufruf ausprobieren, gibt es natrlich eine Fehlermeldung, da keine Datenstze aus der Tabelle Artikel gelscht werden knnen, die mit vorhandenen Bestellungen in Beziehung stehen. Daraus resultiert die folgende Ausgabe:

? DatensatzLoeschen("DELETE FROM Artikel WHERE [Artikel-Nr] = 1")

 3200         Der Datensatz kann nicht gelscht oder gendert werden, da die Tabelle 'Bestelldetails' in Beziehung stehende Datenstze enthlt.

 0

Wenn Sie allerdings beispielsweise eine Bestellung lschen, funktioniert es:

? DatensatzLoeschen("DELETE FROM Bestellungen WHERE [Bestell-Nr] = 10248")

 1

Die Abfrage gibt wie erwartet den Wert 1 zurck. Natrlich knnen Sie auch andere Aktionsabfragen wie beispielsweise Aktualisierungsabfragen durchfhren. Nachfolgende Abfrage ndert alle Lnder der Tabelle Personal von USA auf Vereinigte Staaten:

? AktionsabfrageAusfuehren("UPDATE Personal SET Land = 'Vereinigte Staaten' WHERE Land = 'USA'")

 5

© 2003-2015 André Minhorst Alle Rechte vorbehalten.