Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Unter Access gibt es verschiedene Abfragetypen. Neben den verschiedenen Auswahlabfragen sind die Aktionsabfragen ebenfalls wichtiger Bestandteil. Auch Aktionsabfragen kann man prima über den Abfrageentwurf programmieren. Dieser Artikel stellt die vier verschiedenen Aktionsabfragen vor, mit denen Du Datensätze zu einer Tabelle hinzufügen, die Daten bestehender Datensätze ändern, bestehende Datensätze löschen oder auch neue Tabellen auf Basis einer Auswahlabfragen anlegen kannst.
Beispieldatenbank
Die Beispiele dieses Artikels findest Du in der Datenbank AbfragenBasics_Aktionsabfragen.accdb.
Arten von Aktionsabfragen
Es gibt vier verschiedene Typen von Aktionsabfragen:
- Anfügeabfragen: Fügen neue Datensätze zu einer vorhandenen Tabelle hinzu.
- Aktualisierungsanfragen: Aktualisieren bestehende Datensätze einer Tabelle.
- Löschabfragen: Löschen Datensätze aus einer Tabelle.
- Tabellenerstellungsabfragen: Erstellen eine neue Tabelle auf Basis der angegebenen Auswahlabfrage.
Erstellen einer Anfügeabfrage
Wenn wir die Ribbonbefehle im Bereich Erstellen|Abfragen betrachten, suchen wir vergeblich nach Einträgen zum Erstellen der oben aufgeführten Abfragetypen (siehe Bild 1). Hier ist allein der Befehl Abfrageentwurf zu finden, und auch ein Klick auf die Schaltfläche Abfrage-Assistent eröffnet keine offensichtlichen Möglichkeiten zum Erstellen von Aktionsabfragen.
Bild 1: Anlegen einer neuen Abfrage als Basis für eine Aktionsabfrage
Wenn wir allerdings einmal auf Abfrageentwurf klicken und somit eine neue, leere Abfrage in der Entwurfsansicht anzeigen, erscheinen im Ribbon unter Abfrageentwurf die gewünschten Einträge (siehe Bild 2).
Bild 2: Die Befehle tauchen erst im Entwurf einer neuen Auswahlabfrage auf.
Datensätze löschen per Löschabfrage
Die Löschabfrage ist am einfachsten aufgebaut, daher schauen wir uns diese als Erstes an. Ausgehend von einer frisch angelegten Abfrage ziehen wir als Erstes die Tabelle in den Abfrageentwurf, aus der wir Datensätze löschen wollen – zum Beispiel die Tabelle tblKunden.
Nachdem wir die Tabelle gespeichert haben, fügen wir das Feld KundeID zum Entwurfsraster hinzu und klicken im Ribbon auf die Schaltfläche Abfrageentwurf|Abfragetyp|Löschen (siehe Bild 3).
Bild 3: Erster Entwurf einer Löschabfrage
Dies ändert einige Zeilen im Entwurfsraster:
- die Zeilen Sortierung und Anzeigen fallen weg und
- die Zeile Löschen wird eingeblendet.
Ohne weitere Änderungen wie beispielsweise das Setzen eines Kriteriums können wir nun mit dem Ribbonbefehl Abfrage-ent-wurf|Er-geb-nisse|An-sicht|Da–ten-blattansicht die voraussichtlich von der Aktionsabfrage betroffenen Datensätze anzeigen (siehe Bild 4).
Bild 4: Voraussichtlich von der Aktion betroffene Datensätze
Dies sind allerdings nur die Datensätze, die durch die aktuellen Kriterien ausgewählt werden würden. Welche tatsächlich gelöscht werden, hängt noch von anderen Faktoren ab – zum Beispiel davon, ob die Daten dieser Tabelle gegebenenfalls noch mit anderen Tabellen verknüpft sind und eine Löschbeschränkung vorliegt. Es könnte zum Beispiel sein, dass ein Kunde bereits mit einem Datensatz der Tabelle tblBestellungen verknüpft ist, was ein Löschen verhindern würde.
Die tatsächliche Aktion der Abfrage führen wir dann mit einem Klick auf die Schaltfläche Ausführen im Ribbon aus. Dies zeigt zunächst noch eine Meldung an, die der Benutzer bestätigen muss (siehe Bild 5). Erst wenn das geschehen ist, wird die Aktionsabfrage ausgeführt.
Bild 5: Meldung vor dem Löschen von Datensätzen
In unserem Beispiel geschieht das, was wir bereits beschrieben haben: Die meisten Datensätze sind bereits mit Bestellungen verknüpft und werden nicht gelöscht (siehe Bild 6).
Bild 6: Meldung wegen Schlüsselverletzungen
Kriterien zur Löschabfrage hinzufügen
Eigentlich kommt eine Löschabfrage mit einem Feld aus. Erst wenn wir Kriterien für die zu löschenden Datensätze definieren wollen, müssen wir die Felder hinzufügen, die für die Festlegung der Kriterien benötigt werden. Wenn wir also beispielsweise alle Kunden löschen wollen, die noch keiner Bestellung zugeordnet sind, und somit die Meldung von oben umgehen wollen, können wir eine Unterabfrage als Kriterium des Feldes KundeID hinterlegen:
Nicht In (SELECT KundeID FROM tblBestellungen WHERE tblBestellungen.KundeID = tblKunden.KundeID)
Nach dem Hinzufügen dieser Unterabfrage (siehe Bild 7) löscht die Löschabfrage nur noch die beiden Datensätze der Tabelle tblKunden, die noch keiner Bestellung zugeordnet sind und so verhindern wir auch die Anzeige der zweiten Meldung.
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