Aktionsabfragen per VBA

Mit Aktionsabfragen ändern Sie Daten – ganz im Gegensatz zu Auswahlabfragen, mit denen Sie Daten selektieren. Die Grundlagen zur Erstellung von Aktionsabfragen mit der Entwurfsansicht für Abfragen haben wir in früheren Artikeln bereits behandelt, aber wir haben uns noch nicht im Detail angesehen, wie Sie solche Abfragen unter VBA ausführen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1211_AktionsabfragenPerVBA.mdb.

Varianten

Es gibt mehrere Möglichkeiten, eine Aktionsabfrage unter VBA auszuführen. Die zwei bekanntesten sind die folgenden: Die erste ist die RunSQL-Methode des DoCmd-Objekts. Diese erwartet als Parameter den Namen einer gespeicherten Aktionsabfrage oder den entsprechenden SQL-Ausdruck. Optional kann eine Transaktion angegeben werden, in der die Aktionsabfrage ausgeführt wird. Die zweite Variante ist die Execute-Methode des Database-Objekts der DAO-Bibliothek. Sie bietet ebenfalls einen Parameter an, dem Sie den SQL-Ausdrucks der auszuführenden Abfrage zuweisen – jedoch keine gespeicherten Abfragen, die Sie mit der Abfrage-Entwurfsansicht erstellt haben! Der zweite Parameter jedoch dient der übergabe von Optionen.

Die Execute-Anweisung bietet wesentlich mehr Möglichkeiten als die RunSQL-Methode. Sie können beispielsweise Fehler abfragen, die beim Ausführen von Aktionsabfragen mit der Execute-Anweisung auftreten, oder Sie fragen die Anzahl der von der Aktionsabfrage betroffenen Datensätze ab. Schließlich können Sie auch noch den Primärschlüsselwert des zuletzt hinzugefügten Datensatzes ermitteln, sofern dieser mit einer Aktionsabfrage hinzugefügt wurde.

Einsatz der DoCmd.RunSQL-Methode

Die DoCmd.RunSQL-Methode ist prinzipiell mit dem Menübefehl zum Ausführen der aktuell im Datenbankfenster beziehungsweise im Navigationsbereich markierten Aktionsabfrage zu vergleichen. Der Unterschied ist, dass Sie bei der VBA-Anweisung noch den Namen der Anweisung angeben müssen. Um eine einfache Abfrage zum ändern eines Datensatzes auszuführen, legen Sie diese zunächst wie in Bild 1 an und speichern sie unter dem Namen qryLagerbestandErhoehen. Die Abfrage erhöht den Bestand des Artikels mit dem Wert 1 im Feld ArtikelID um 1.

Aktionsabfrage zum Erhöhen des Lagerbestandes eines Artikels um 1

Bild 1: Aktionsabfrage zum Erhöhen des Lagerbestandes eines Artikels um 1

Wechseln Sie dann in die SQL-Ansicht der Abfrage (am einfachsten durch einen Rechtsklick auf die Titelleiste der Abfrage und Auswahl des Eintrags SQL-Ansicht aus dem Kontextmenü) und kopieren Sie den dort angezeigten SQL-Ausdruck in die Zwischenablage (siehe Bild 2). Diese fügen Sie dann in Anführungszeichen als ersten Parameter der RunSQL-Methode im Direktfenster des VBA-Editors ein (Strg + G):

SQL-Ansicht der Abfrage qryLagerbestandErhoehen

Bild 2: SQL-Ansicht der Abfrage qryLagerbestandErhoehen

DoCmd.RunSQL "UPDATE tblArtikel SET Lagerbestand = [Lagerbestand]+1 WHERE ArtikelID=1"

Das Ausführen dieser Abfrage durch Betätigen der Eingabetaste führt zum Anzeigen der Meldung aus Bild 3. Wenn Sie auf Ja klicken, wird der Datensatz geändert, anderenfalls löst dies einen Fehler aus.

Hinweis auf den anstehenden Löschvorgang

Bild 3: Hinweis auf den anstehenden Löschvorgang

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar