Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Aktionsabfragen lassen sich bequem mit der Entwurfsansicht für Abfragen zusammenstellen. Sie können damit Daten an Tabellen anfügen, bestehende Daten ändern oder löschen und sogar gleich die passende Tabelle zum Einfügen von Daten erstellen. Wie aber soll der Benutzer eine solche Abfrage aufrufen, ohne doppelt auf den entsprechenden Eintrag im Datenbankfenster oder im Navigationsbereich zu klicken Dieser Artikel zeigt, wie Sie dies realisieren.
Beispieldatenbank
Die Beispiele zu diesem Artikel finden Sie in der Datenbank 1105_AktionsabfragenPerVBA.mdb.
Aktionsabfragen
Wenn Sie eine Aktionsabfrage erstellen, gehen Sie wie in Aktionsabfragen – Teil II: Löschabfragen oder Aktionsabfragen – Teil I: Anfügeabfragen beschrieben vor. Weitere Artikel zu Aktualisierungsabfragen oder Tabellenerstellungsabfragen folgen in späteren Ausgaben.
Das Resultat beim Erstellen einer Aktualisierungsabfrage mit der Abfrageentwurfsansicht ist eine gespeicherte Abfrage. Diese führen Sie per Doppelklick auf den entsprechenden Eintrag im Datenbankfenster oder im Navigationsbereich aus.
Ein Beispiel hierfür ist die Löschabfrage aus Bild 1. Sie ist unter dem Namen qryArtikelLoeschen gespeichert und bildet die Grundlage für das folgende Beispiel.
Bild 1: Entwurfsansicht einer Abfrage zum Löschen des Artikels mit dem Wert 1 im Feld ArtikelID.
Die Abfrage löscht genau einen Datensatz, und zwar den mit dem Wert 1 im Feld ArtikelID. Das gilt natürlich nur, wenn ein solcher Datensatz überhaupt vorhanden ist. Sonst bewirkt der Aufruf dieser Abfrage gar nichts.
Die Execute-Methode
Nun folgt der interessante Teil: Access bietet eine ganze Reihe von VBA-Objekten an, die wiederum praktische Methoden etwa für den Zugriff auf Daten offerieren. In unserem Fall geht es um das Objekt, dass die aktuelle Datenbank repräsentiert.
Es hat den Datentyp Database und wird als Objektvariable deklariert. Das alles ist für Einsteiger vielleicht noch etwas unverständlich – das ist aber kein Problem. Manche Dinge kann man zu Beginn einfach als gegeben hinnehmen. In diesem Fall geht es um die folgenden Codezeilen:
Dim db As Database Set db = CurrentDb
Die erste Zeile deklariert db als Objektvariable des Typs Database, die zweite füllt diese Variable mit dem Wert der Funktion CurrentDb. CurrentDb wiederum liefert einen Verweis auf die aktuelle Datenbank.
Dank dieser beiden Zeilen können Sie nachfolgend über die Variable db bestimmte Aktionen mit der Datenbank durchführen.
In unserem Fall soll eine Aktionsabfrage durchgeführt werden, genau genommen eine Löschabfrage.
Der dazu benötigte Befehl des mit db referenzierten Objekts heißt Execute. Execute erwartet als Parameter zumindest eine Variable oder Zeichenkette, die folgendes enthält:
- den Namen der Aktionsabfrage, wie Sie ihn auch im Datenbankfenster oder im Navigationsbereich finden (hier also beispielsweise qryArtikelLoeschen)
- den SQL-Code der Aktionsabfrage (wie Sie diesen ermitteln, erfahren Sie gleich).
Am einfachsten ist es natürlich, wenn Sie eine DELETE-Abfrage per Abfrageentwurf zusammenstellen und diese direkt per VBA aufrufen möchten. Die nötigen Anweisungen sehen dann so aus:
Private Sub EinfacherAufruf() Dim db As DAO.Database Set db = CurrentDb db.Execute "qryArtikelLoeschen" Set db = Nothing End Sub
Wenn Sie das Beispiel nachvollziehen möchten, legen Sie ein neues Standardmodul an und fügen Sie den obigen Code dort ein (?[basics] VBA-Modul anlegen).
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo