Abfragen zum Löschen von Daten
395
Abfragen
Abfragen zum Löschen von Daten
Präfix
»qdel«
Eine Löschabfrage entfernt unter bestimmten Bedingungen Datensätze aus einer oder mehreren
Tabellen, die in einer 1:1-Beziehung stehen. Löschabfragen sollten mit dem Präfix »qdel« (für
delete) abgelegt werden.
Im Beispiel sollen alle Datensätze der Tabelle tblArtikelverkauf gelöscht werden.
1. Definieren Sie eine Auswahlabfrage, die alle Datensätze der Tabelle tblArtikelverkauf als Ergebnis hat.
2. Ändern Sie die Abfrageart mit der Schaltfläche Abfrageart: Löschen.
Abbildg. 19.23
Löschen aller Datensätze
Sollen nicht alle Datensätze, sondern nur die Daten der Tabelle gelöscht werden, die im Feld Datum
einen Wert kleiner dem 1.5.2007 stehen haben, so ändern Sie die Abfrage wie folgt ab:
Nehmen Sie das Feld Datum in den unteren Bereich im Abfrage-Entwurfsfenster auf. In der Zeile
Löschen wird dabei automatisch Bedingung eingetragen. Geben Sie dann in der Zeile Kriterien die
entsprechende Auswahlbedingung an.
Abbildg. 19.24
Löschen aller Daten, die ein Datum vor dem 1.5.2007 haben
Kapitel 19
Aktionsabfragen
396
Im nächsten Schritt sollen nur diejenigen Daten gelöscht werden, die ein Datum vor dem 1.5.2007
aufweisen und der Produktgruppe
034
angehören. Die Produktgruppe ist Bestandteil der Artikel-
nummer. Die Formel
Links([Artikelnummer];3)
schneidet aus der Artikelnummer die Produkt-
gruppe heraus. Diese Formel wird als Löschbedingung erfasst, wie es Abbildg. 19.25 zeigt.
Abbildg. 19.25
Berechnetes Feld für die Löschbedingung
Bei Tabellen, die zueinander in einer 1:n-Beziehung mit referentieller Integrität
stehen, sollten Sie vor dem Löschen in der Tabelle auf der »1«-Seite kontrollieren, ob Sie nicht
unbeabsichtigt Datensätze auf der »n«-Seite entfernen. Ist für die Beziehung der beiden Tabellen
im Dialogfeld Beziehungen eine referentielle Integrität definiert und die Option schweitergabe
an verwandte Datensätze eingeschaltet, werden von Access beim Löschen automatisch auch die
entsprechenden Datensätze auf der »n«-Seite eliminiert.
Komplexe Löschbedingungen
Access ist darüber hinaus in der Lage, Datensätze aufgrund komplexer und verknüpfter Bedingungen
zu löschen. Im folgenden Beispiel sollen alle Termine gelöscht werden, die in den Kalenderwochen vor
dem 1.3.2007 lagen. In der Entwurfsansicht in Abbildg. 19.26 wird die Problemstellung dargestellt.
Abbildg. 19.26
Verknüpfte Löschabfrage
HINWEIS
Abfragen zum Löschen von Daten
397
Abfragen
Duplikate löschen
Ein immer wieder auftretendes Problem ist das Löschen von doppelten Datensätzen. Es ist relativ
einfach, die doppelt vorhandenen Datensätze zu ermitteln, beispielsweise mit dem Abfrage-Assis-
tenten zur Duplikatsuche. Damit sind die doppelten Datensätze aber noch nicht gelöscht. Man
könnte zwar aus der Auswahlabfrage zur Ermittlung der Duplikate eine Löschabfrage machen, aber
diese würde zu viele Datensätze eliminieren, nämlich nicht nur die überzähligen Duplikate, sondern
alle Datensätze, bei denen das Auswahlkriterium mehrfach vorkommt.
Es gibt eine Reihe von Ansätzen, um Duplikate zu löschen. Wir möchten Ihnen eine Variante vor-
stellen, die Sie an Ihre Bedürfnisse anpassen können. Die Lösung hat den Vorteil, dass die Duplikate
in einem Schritt, ohne zusätzliche temporäre Tabellen, gelöscht werden können. Die Methode setzt
allerdings voraus, dass in der Tabelle, in der sich die Duplikate befinden, ein Primärschlüssel defi-
niert ist. Gegebenenfalls müssen Sie zuerst einen Primärschlüssel, am einfachsten in Form eines
AutoWert-Felds, hinzufügen.
Zum Löschen der Duplikate benötigen Sie eine Auswahl- und eine Löschabfrage. In unserem Bei-
spiel sind in der Tabelle tblFilme einige Filme doppelt erfasst worden. Die Abfrage soll für jeden Film
die niedrigste Filmnummer bestimmen. Die Filmnummer ist der eindeutige Schlüssel der Tabelle.
Abbildg. 19.27 zeigt die Auswahlabfrage in der Entwurfsansicht.
Abbildg. 19.27
Die erste Filmnummer zu jedem Filmtitel
Wie werden die doppelten Datensätze in tblFilme ermittelt? Doppelt sind alle Datensätze, die nicht
im Ergebnis der Abfrage qryDoppelteFilme auftauchen, denn hier steht jeder Film nur einmal mit
seiner kleinsten Filmnummer.
Um die doppelten Einträge zu löschen, müssen also alle Filme entfernt werden, die nicht im Ergeb-
nis von qryDoppelteFilme enthalten sind. Dieses erreichen Sie (wie Abbildg. 19.28 zeigt) durch eine
Löschabfrage mit Unterabfrage. Vollständige Informationen zum Thema Unterabfragen erhalten Sie
in Kapitel 20.

Get Microsoft Office Access 2007 - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.