Wer schon etwas länger mit Access arbeitet, kennt das: Sie möchten mal eben den Wert eines Feldes für alle Datensätze ändern oder auch eine bestimmte Gruppe von Datensätzen löschen. Manuell in der Datenblattansicht ist das aber nicht zu erledigen, weil die Anzahl der Datensätze dafür zu groß ist. Dafür extra eine Aktionsabfrage erstellen und ausführen Nein, das ist auch zuviel Aufwand. Also bleibt nur eine Möglichkeit: Sie schaffen sich einige Grundlagen zum Thema Aktionsabfragen unter SQL drauf und erledigen die genannten Aufgaben schnell vom Direktfenster aus.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1212_SQLAktionsabfragen.mdb.
Aufruf
Zum Ausführen einer Aktionsabfrage über das Direktfenster können Sie zwei verschiedene Methoden verwenden. Beide werden im Artikel Aktionsabfragen per VBA ausführlich erläutert. Im vorliegenden Artikel verwenden wir ausschließlich die Execute-Methode des mit CurrentDb gelieferten Objekts. Dies sieht, am einfachen Beispiel einer Löschabfrage, etwa so aus:
CurrentDb.Execute "DELETE FROM tblTest", dbFailOnError
Mit dieser Anweisung, abgesetzt im Direktfenster des VBA-Editors, das Sie mit der Tastenkombination Strg + G öffnen, würden Sie alle Datensätze der Tabelle tblTest löschen (siehe Bild 1). Die Execute-Anweisung erwartet die SQL-Variante der Aktionsabfrage als Parameter in Anführungszeichen. Der Wert dbFailOnError für den zweiten Parameter sorgt dafür, dass eventuell auftretenden Fehler gemeldet werden.
Bild 1: Absetzen einer SQL-Anweisung per Direktfenster
Damit Sie etwas Spaß an den Beispielen des Artikels haben, finden Sie in der Beispieldatenbank ein Formular namens frmSQLAktionsabfragen. Dort können Sie Aktionsabfragen zum Ausprobieren eingeben und auf Ausführen klicken – dies ist erstens etwas einfacher als der Weg über das Direktfenster und zweitens erhalten Sie auch noch Feedback, wieviele Datensätze von der änderung betroffen sind (siehe Bild 2).
Bild 2: Hilfsformular zum Ausführen von SQL-Aktionsabfragen
Das Formular ist außerdem an eine Tabelle namens tblAktionsabfragen gebunden, die alle Beispielaufrufe dieses Artikels speichert – Sie können diese also im Formular durchlaufen und ausprobieren. Der notwendige Code hinter der Schaltfläche ist einfach:
Private Sub cmdAusfuehren_Click() Dim db As DAO.Database Set db = CurrentDb db.Execute Me!txtAktionsabfrage, dbFailOnError MsgBox "Anzahl betroffener Datensätze: " _ & db.RecordsAffected Set db = Nothing End Sub
Er führt lediglich die Aktionsabfrage aus und fragt nachher mit der Eigenschaft RecordsAffected ab, wieviele Datensätze von der änderung betroffen sind.
Die tatsächlich für die Schaltfläche hinterlegte Prozedur ist etwas komplizierter, weil diese es erlaubt, die durchgeführten änderungen wieder zu verwerfen – dieses Thema werden wir jedoch in einem anderen Artikel behanden, aktuell dient dies nur Ihrer Bequemlichkeit.
Syntax ermitteln
In den folgenden Abschnitten erhalten Sie grundlegende Informationen zu den vier möglichen Aktionsabfragen. Damit können Sie wahrscheinlich die meisten Konstellationen abbilden. Allerdings kann es auch sein, dass Sie doch einen kleinen Denkanstoß benötigen – in diesem Falle ziehen Sie dann doch die Entwurfsansicht für Abfragen zuhilfe und erstellen damit die gewünschte Aktionsabfrage. Anschließend können Sie den SQL-Code für diese Abfrage ganz einfach ermitteln.
Die Abfrage aus Bild 3 etwa soll die Einzelpreise aller Datensätze um 10% erhöhen, von denen im November 2011 mehr als 100 verkauft wurden. Nachdem Sie diese Abfrage eingegeben haben, können Sie mit einem Rechtsklick auf die Titelleiste des Abfrageentwurfs und dem anschließenden Auswählen des Eintrags SQL-Ansicht des Kontextmenüs die SQL-Ansicht betrachten. Einen solchen Ausdruck werden Sie erst nach einiger übung aus dem Kopf entwerfen können … (siehe Bild 4). Dennoch: Auch diese Ausdruck können Sie kopieren und mit dem oben vorgestellten Formular ausführen lassen. Sie dürfen die SQL-Ansicht natürlich auch für die Ermittlung der SQL-Ausdrücke einfacherer Aktionsabfragen heranziehen. In den folgenden Abschnitten lernen Sie nun die SQL-Syntax der vier verschiedenen SQL-Aktionsabfragen kennen.
Bild 3: Komplizierte Abfrage im Entwurf
Bild 4: Komplizierte Abfrage – unter SQL noch verwirrender
Daten löschen
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: