19 Aktionsabfragen. 290 Datenaktualisierung 296 Daten an Tabellen anfügen 299 Neue Tabellen mit Abfragen erstellen 300 Löschabfragen.

Ähnliche Dokumente
Mastertabelle. Feldliste

A BFRAGEN IN M ICROSOFT A CCESS

1. Benennen Sie die Elemente der Access-Benutzeroberfläche: Wann müssen Sie einer Datenbank einen Namen geben?

1. Benennen Sie die Elemente der Access-Benutzeroberfläche: Wann müssen Sie einer Datenbank einen Namen geben?

Informatik Access 2003

Besonders für den Anfänger empfiehlt sich folgende Vorgehensweise für die Erstellung von Manipulationsabfragen:

1. Tabellen-Beziehungen

1 Erste Schritte...13

INHALTSVERZEICHNIS 1 VORWORT 11 ZU DIESER TRAININGSUNTERLAGE 12 2 ACCESS ERSTE SCHRITTE DATENBANK schlffiben 25

Abfragen in Access. Die einfache Auswahlabfrage aus einer einzigen Tabelle

Microsoft Access Abfragen. Verknüpfung von Tabellen

MS Access 2013 Kompakt

Eine Abfrage ist keine Tabelle, sondern nur ein Zeiger auf eine oder mehrere Ursprungstabellen.

Verlag: readersplanet GmbH Neuburger Straße Passau.

4 Makros ausprobieren

Schnellübersichten. ECDL Datenbanken mit Windows 10 und Access 2016

Microsoft Access Arbeiten mit Tabellen. Anja Aue

Schnellübersichten. Access 2016 Grundlagen für Datenbankentwickler

Wichtige Standardaktionen durchführen

Indizes. Index. Datenfeld Normale Tabelle. Gesucht wird: Zugriff. 3. Zugriff 1. Zugriff.

Microsoft Access Abfragen: Informationen anzeigen und sortieren

Während in Tabellen die Daten gespeichert werden, sind Abfragen für die Darstellung und Auswertung der Daten zuständig.

Das Erstellen einer Datenbank in MS Access 2010

Access 2000 und MS SQL Server im Teamwork

Microsoft Access Relationen. Anja Aue

Zweitens über eine Abfrage, welche die Tabellen tblartikel und tbllieferanten verknüpft. Auf diese Weise würde das Kombinationsfeld

MS Access 2010 Kompakt

ACCESS das Datenbankprogramm. (Aufbau) DI (FH) Levent Öztürk

Übersicht der wichtigsten MySQL-Befehle

ACCESS Arbeiten mit. Datenbanken mit Tabellen Abfragen Formularen Berichten Makros Datenaustausch Projekten. Dipl.-Hdl., Dipl.-Kfm.

Rechnungsprogramm in Access. Kundentabelle erstellen. Felder erstellen

Allgemeine Hinweise zum Erstellen einer einfachen Datenbank

4.8 Mithilfe von Funktionen die Daten zusammenfassen

Query-Manager Kurzanleitung Inhalt. Query-Manager. Kurzanleitung

Im Original veränderbare Word-Dateien

New Horizons Computer Learning Centers in D/A/CH

Serienbrief erstellen

Access Grundkurs. M. Eng. Robert Maaßen

Abfragen formulieren. Lernziele. Abfragen erstellen

Datenbank konfigurieren

Datenbanken Kapitel 1

OpenOffice Base 3.4 PRAXIS. bhv. Datenbank mit. Schritt für Schritt eine Datenbank mit OpenOffice Base erstellen

MS Access starten / Neue Datenbank anlegen. über Startmenü: Programme / Microsoft Office durch Doppelklick auf vorhandene Access-Datenbank

Access Verbrecherdatenbank Teil 1

Die SQL-Schnittstelle

Das Grundlagenbuch zu FileMaker Pro 7- Datenbanken erfolgreich anlegen und verwalten

So geht s Schritt-für-Schritt-Anleitung

Dynamische Segmentierung

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Im Original veränderbare Word-Dateien

ER-Modell, Normalisierung

KOPF- UND FUßZEILEN KOPF- UND FUßZEILEN HINZUFÜGEN

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

5 Abfragen zur Analyse Ihrer Daten

Es geht also im die SQL Data Manipulation Language.

Schnellübersichten. Access 2016 Grundlagen für Anwender

Die SQL-Schnittstelle

Microsoft Access 2016 Abfragen (inkl. Musterlösung)

Microsoft Access Integritätsregeln für Tabellen. Anja Aue


Excel Pivot-Tabellen 2010 effektiv

Datenbank und Tabelle mit SQL erstellen

Daten auf einem Formular zusammenführen

Excel Tipps & Tricks Umgang mit umfangreichen Tabellen

Auswertung der Workload-Befragung mit MS ACCESS

Inhalt 1 2. Über dieses Buch 9. Eigene Web Apps erstellen 15. Web Apps weiterentwickeln 27

Eine Kundendatenbank erstellen

Dipl.-Hdl., Dipl.-Kfm. ACCESS 2007

6.2 Access laden und neue Datenbank erstellen

1: Access starten und beenden

OpenOffice - Base G. Laner 1

ZM(B) Erinnerungsschreiben

Access [basics] Aktionsabfragen per VBA ausführen. Beispieldatenbank. Aktionsabfragen. Die Execute-Methode. Datenzugriff per VBA

- 2 - Die einzelnen Datenfelder ( Artikelname, Lieferant,...)

Arbeitsmappe. Die Arbeitsblatt-Register. 31 Die Arbeitsblatt-Register 32 Der Umgang mit Arbeitsmappen 34 Mustervorlagen. ADer Einstieg in Excel 2000

Im Original veränderbare Word-Dateien

TABELLEN IN DER ENTWURFSANSICHT...

Empfänger. Alle Empfänger, die sich für Ihre(n) Newsletter angemeldet haben, werden in der Empfängerverwaltung erfasst.

-Abwesenheitsnachricht einrichten

- Welche Beziehungstypen werden von ACCESS unterstützt? ACCESS unterstützt die Beziehungen + 1:1 + 1:n bzw. 1:cn + m:n

Noch einmal zur Wiederholung: Alle Datenbank-Tabellen sind egal welche Information in ihnen gespeichert ist nach dem gleichen Muster aufgebaut:

Vorwort Einführung in Power Query Erste Abfrage erstellen... 21

Auswahl-Abfragen in Microsoft ACCESS

Richtig einsteigen: Datenbanken entwickeln mit Access 2007

Seriendruck. Word Aufbau ZID/Dagmar Serb V.03/Sept. 2015

Microsoft Access 2010 SQL nutzen

Datenstrukturen bei Datenübernahme

Handbuch zur Kapazitätserfassung in AX4 Für Lieferanten der DEUTZ AG

Excel 2016 Pivot Tabellen und Filter Daten professionell auswerten

Microsoft Access 2013 Abfragen (inkl. Musterlösung)

Access Seminare. Excel Basismodule

Inhaltsverzeichnis. Einleitung 11. Modul 1 Die erste Datenbank 15. Modul 2 Tabellen in der Entwurfsansicht definieren 21. Inhaltsverzeichnis

Handbuch zum VivaWeb-Serienbrief-Programm

7 DOKUMENTEE FORMATIEREN

Microsoft Access 2010 Bilder

1. Kapitel Konfiguration der Felder der Kursbeschreibung

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Projekte verwalten Projekte bieten in Synago eine Möglichkeit, Freizeiten Einladungsaktionen oder Rundbriefe zu organisieren. So funktioniert es

Arbeiten mit ACCESS 2010

4.5 Tabelle ausdrucken

Transkript:

19 Aktionsabfragen 290 Datenaktualisierung 296 Daten an Tabellen anfügen 299 Neue Tabellen mit Abfragen erstellen 300 Löschabfragen CAbfragen Aktionsabfragen führen Änderungen an den Daten Ihrer Tabellen durch. Sie können beispielsweise eine Aktionsabfrage verwenden, um mit nur einem Befehl alle Artikel Ihrer Artikeltabelle 10% teurer zu machen. In den meisten Fällen werden die Aktionsabfragen aus einer Auswahlabfrage entwickelt, d.h. Sie beginnen damit, eine Auswahlabfrage zu erstellen, die die zu ändernden Daten ermittelt, und konvertieren dann diese Abfrage zu einer Aktionsabfrage. In Access können Sie zwischen den folgenden Aktionsabfragen wählen: Aktualisierungsabfragen, Löschabfragen, Anfügeabfragen und Tabellenerstellungsabfragen. In der Abfragenentwurfsansicht selektieren Sie den gewünschten Abfragetyp mit Hilfe der Schaltfläche Abfragetyp oder über das Menü Abfrage. Alle Aktionsabfragen erwarten normalerweise eine Bestätigung der Änderung. Möchten Sie die Bestätigung unterdrücken, können Sie im Dialogfeld Optionen (Menübefehl Extras/Optionen) auf der Registerkarte Bearbeiten/Suchen die entsprechende Option im Gruppenfeld Bestätigen ausschalten. Abbildung 19.1: Ausschalten der Bestätigungsmeldung 289

In allen Aktionsabfragen können Parameter eingesetzt werden, so dass der Benutzer Bedingungen und Werte beim Ablaufen der Abfrage eingeben kann. Für die Parameter gelten die gleichen Regeln wie für Auswahlabfragen (siehe X Kapitel 15, Abschnitt»Parameterabfragen«). Datenaktualisierung Mit Hilfe von Datenaktualisierungsabfragen verändern Sie die Inhalte Ihrer Tabellen mit Hilfe von Abfragen. Für jede Zeile einer Tabelle, gegebenenfalls eingeschränkt durch eine Bedingung, werden für die gewählten Spalten neue Werte errechnet und gespeichert. Einfache Aktualisierungsabfrage Das Feld Turnaround in der Tabelle tblkinos gibt die Zeit an, die benötigt wird, damit alle Besucher einen Kinosaal verlassen und die neuen Besucher ihre Sitzplätze finden können. Es soll nun eine Aktualisierungsabfrage erstellt werden, die für alle Kinos eine Turnaround-Zeit von 45 Minuten festlegt. Beachten Sie dabei, dass gegebenenfalls vorhandene Turnaround-Werte dabei überschrieben werden. Aktualisierungsabfragen sind vor allem dann sinnvoll, wenn größere Datenmengen gleichzeitig geändert werden müssen. Sie erhalten als Kennung zur Unterscheidung von anderen Abfragen das Kürzel»qupd«, kurz für»query Update«. Es soll eine Datenaktualisierungsabfrage erstellt werden, die die Turnaround-Zeiten für alle Kinos auf 45 Minuten setzt. Beginnen Sie zuerst mit einer normalen Auswahlabfrage für die Tabelle tblkinos. PRÄFIX»QUPD«DIE AUFGABE DIE LÖSUNG Abbildung 19.2: Zuerst die Auswahlabfrage Mit dem Menübefehl Abfrage/Aktualisierungsabfrage wandeln Sie die Auswahlabfrage zu einer Aktualisierungsabfrage um. Sie erhalten dadurch im unteren Abfragebereich eine zusätzliche Zeile Aktualisieren angezeigt. Wie in Abbildung 19.3 dargestellt, wurde für das Feld Turnaround in die Zeile Aktualisieren der Wert 45 eingetragen, d.h., für alle Datensätze der Tabelle tblkinos wird der Inhalt des Feldes beim Ausführen der Abfrage auf den unter Aktualisieren angegebenen Wert gesetzt. 290 Kapitel 19

CAbfragen Abbildung 19.3: Die Turnaround- Zeit auf 45 Minuten setzen Nachdem Sie den Befehl zur Ausführung der Abfrage gegeben haben, ermittelt Access, wie viele Datensätze von der Änderung betroffen sind und blendet eine entsprechende Bestätigungsmeldung ein. Abbildung 19.4: Bestätigungsmeldung Ausführen oder umschalten in die Datenblattansicht? Bei allen Aktionsabfragen können Sie vorher sehen, welche Datensätze betroffen sind. Dazu bestehen zwei Möglichkeiten: Sie können zuerst eine Auswahlabfrage erstellen, sich die zu ändernden Daten ansehen und die Abfrage dann in einer Aktionsabfrage umwandeln. Einfacher und eleganter ist es, die richtige Schaltfläche auszuwählen: Klicken Sie auf die Schaltfläche Ausführen (oder wählen Sie den Menübefehl Abfrage/Ausführen), so wird die Aktion durchgeführt. Selektieren Sie dagegen die Schaltfläche Ansicht (bzw. Ansicht/Datenblattansicht), so werden nur die betroffenen Datensätze angezeigt, nicht aber die Aktion ausgeführt. Aktualisierungsabfragen mit Bedingungen Aktualisierungsabfragen lassen sich auch mit Bedingungen versehen, d.h., es werden nur die Datensätze aktualisiert, die einer bestimmten Bedingung entsprechen. Nehmen wir einmal an, die Preise der Artikel, die am Kinokiosk verkauft werden, müssen um 15% erhöht werden. Allerdings sind nicht alle Artikel betroffen, sondern nur die beiden Produktgruppen»034«und»03F«. Die Nummer der Produktgruppe ist in der Tabelle tblartikel in der Artikelnummer enthalten, da die ersten drei Stellen der Artikelnummer die Produktgruppe ergeben. Aktionsabfragen 291

Die Auswahlabfrage in Abbildung 19.5 zeigt die Definition, um alle Artikelnummern, Produktgruppen und Verkaufspreise zu ermitteln, sowie die Bedingung zur Einschränkung der Produktgruppen. Abbildung 19.5: Auswahlabfrage Mit dem Menübefehl Abfrage/Aktualisierungsabfrage bzw. mit Hilfe der Schaltfläche Abfragetyp wandeln Sie die Auswahlabfrage in eine Aktualisierungsabfrage um. Abbildung 19.6: Umgewandelt in eine Aktualisierungsabfrage In der Zeile Aktualisieren im unteren Teil der Entwurfsansicht geben Sie nun an, wie die Preiserhöhung um 15% errechnet werden soll. Um einen neuen Verkaufspreis zu ermitteln, wird der alte Verkaufspreis mit 1,15 multipliziert und das Ergebnis auf zwei Stellen nach dem Komma gerundet, weil es keine halben Pfennige bzw. Cents gibt. In der Entwurfsansicht schreiben Sie in die Aktualisierungszeile für die Spalte Verkaufspreis: Runden([Verkaufspreis]*1,15;2). 292 Kapitel 19

CAbfragen Abbildung 19.7: Preiserhöhungsformel TIPP HINWEIS Eigentlich heißt die Formel für den neuen Verkaufspreis jetzt Verkaufspreis = Runden(Verkaufspreis * 1,15;2). Diese Formel müssen Sie so lesen:»nimm den Inhalt des Feldes Verkaufspreis eines Datensatzes, multipliziere ihn mit 1,15 und schreibe das auf zwei Stellen nach dem Komma gerundete Ergebnis wieder in das Feld Verkaufspreis des aktuellen Datensatzes.«Übrigens wird beim Abspeichern der Abfrage die Spalte Artikelnummer übergangen, denn sie ist für die Aktualisierungsabfrage ohne Bedeutung. Auch die Bezeichnung Warengruppe wird entfernt. Laden Sie die gespeicherte Abfrage wieder, so ist neben der Spalte Verkaufspreis nur noch die gespeicherte Filterbedingung zu sehen. Testen Sie zuerst in einer Auswahlabfrage, ob die richtigen Datensätze herausgefiltert werden, bevor Sie Ihre Daten mit einer Aktualisierungsabfrage ändern. Bei Tabellen, die zueinander in 1:n-Beziehung mit referentieller Integrität stehen, sollten Sie vor dem Update in der Tabelle auf der»1«-seite kontrollieren, ob Sie nicht unbeabsichtigt Datensätze auf der»n«-seite ändern. Ist für die Beziehung der beiden Tabellen im Dialogfeld Beziehungen eine referentielle Integrität definiert und die Option Aktualisierungsweitergabe an Detailfeld eingeschaltet, werden von Access beim Update die entsprechenden Datenfelder auf der»n«- Seite aktualisiert. Aktualisierungsabfragen mit Parametern Ebenso wie in Auswahlabfragen können Sie in Aktualisierungsabfragen mit Parametern arbeiten. Möchten Sie beispielsweise die oben beschriebene Abfrage flexibel einsetzen können, also den Faktor der Preisänderung und die Produktgruppe beim Ausführen der Abfrage jeweils angeben, so gestalten Sie Ihre Abfrage wie in Abbildung 19.8 gezeigt. Aktionsabfragen 293

Abbildung 19.8: Aktualisierungsabfrage mit Parametern Der Parameter [Faktor] wird für die Berechnung des neuen Verkaufspreises eingesetzt, der Parameter [Produktgruppe] für die Einschränkung der auszuwählenden Produktgruppe. Aktualisieren mit mehreren Tabellen In vielen Fällen liefert eine zweite oder mehrere Tabellen die Werte zur Berechnung bzw. die Bedingungen, nach denen aktualisiert wird. Wir möchten Ihnen im Folgenden einige Varianten vorstellen, wobei die Variante 2 ein Vorgriff auf X Kapitel 20 darstellt, denn sie arbeitet mit SQL-Unterabfragen. Variante 1: Aktualisierung mit verknüpften Tabellen Access ermöglicht es, im Gegensatz zu vielen anderen Datenbanken, die ebenso die Abfragesprache SQL benutzen, verknüpfte Tabellen zu aktualisieren, d.h. Daten in einer oder mehreren der verknüpften Tabellen zu ändern. Wir möchten im folgenden Beispiel alle Vorstellungstermine mit einem Warnhinweis versehen, wenn die Vorstellung in einem Kino stattfindet, in dem die Turnaround-Zeit mit 45 Minuten oder mehr angegeben ist. Dazu wurden die beiden Tabellen tbltermine und tblkinos, die zueinander in einer n:1-beziehung stehen, in eine Aktualisierungsabfrage aufgenommen. Mit Hilfe des Textverkettungsoperators»&«können Sie Zeichenketten und Textfelder zusammenfügen und Feldern zuweisen. Abbildung 19.9: Hinzufügen eines Kommentars 294 Kapitel 19

CAbfragen Bei der Definition von Aktualisierungsabfragen mit verknüpften Tabellen ist es wichtig, dass die Tabellen in einem n:1-verhältnis zueinander stehen. In Abbildung 19.10 sehen Sie eine fehlerhafte Abfragedefinition. Eigentlich soll der Verkaufspreis aller Artikel gesenkt werden, die im Verkauf in einem Verkaufsvorgang mehr als fünfmal verkauft wurden. Abbildung 19.10: Fehlerhafte Abfrage Die Abfrage führt den Vorgang der Preisreduzierung für jeden Datensatz der Tabelle tblartikelverkauf durch, der der Bedingung genügt. Wurde ein Artikel beispielsweise zehnmal mit einer Stückzahl von mehr als fünf verkauft, so würde der Verkaufspreis zehnmal um 20% gesenkt, wie es die Formel für den Verkaufspreis angibt. Das ist mit Sicherheit nicht der gewünschte Effekt, oder? Variante 2: Die zweite Tabelle stellt die Bedingung Die zweite Aktualisierungsvariante verwendet eine SQL-Unterabfrage zur Ermittlung der Bedingung für die Aktualisierung. Sollten Ihnen SQL-Unterabfragen noch nicht bekannt sein, so überspringen Sie die nächsten beiden Abschnitte, und lesen Sie zuerst X Kapitel 20, in dem Unterabfragen behandelt werden. Die Aktualisierungsabfrage soll den Verkaufspreis aller Artikel um 20% senken, von denen sich bisher weniger als 1.300 Stück verkauft haben. Abbildung 19.11: Aktualisierungsabfrage mit SELECT- Bedingung Aktionsabfragen 295

Die Bedingung der Preissenkung enthält eine Auswahlabfrage, die für jeden Artikel von tblartikel die Summe der verkauften Artikel in der Tabelle tblartikelverkauf ermittelt. Daten an Tabellen anfügen Mit Hilfe einer Anfügeabfrage hängen Sie das Ergebnis einer Abfrage als neue Datensätze an eine andere, bereits bestehende Tabelle an. Anfügeabfragen erhalten den Präfix»qapp«(vom englischen Wort»append«für beifügen oder hinzufügen). Einen Einsatzfall für Anfügeabfragen, der in vielen Anwendung verwendet wird, möchten wir Ihnen jetzt beschreiben: die Archivierung von Datensätzen. In unserer Tabelle tblkinokasse befinden sich eine große Anzahl an Datensätzen vergangener Wochen. Es macht nun Sinn, in regelmäßigen Abständen alte Daten zu entfernen, damit der Datenbestand nicht zu groß wird und gegebenenfalls die Arbeitsgeschwindigkeit negativ beeinflusst. Wir möchten aber nicht einfach alle alten Daten löschen, sondern sie archivieren, sodass nachträgliche Auswertungen durchgeführt werden können. Bei der Archivierung sollen alle Datensätze, die vor einem bestimmten Datum erfasst worden sind, in die Archivtabelle transferiert werden. Präfix»qapp«Leere Tabelle anlegen Lassen Sie uns zunächst eine leere Archivtabelle anlegen. Am einfachsten ist es, wir erstellen eine neue Tabelle, die die gleiche Struktur wie die zu archivierende Tabelle tblkinokasse aufweist. Dies können Sie mit wenigen Mausklicks erreichen: 1. Selektieren Sie die gewünschte Tabelle, hier tblkinokasse, im Access-Datenbankfenster. 2. Nehmen Sie die Tabelle über den Menübefehl Bearbeiten/Kopieren in die Zwischenablage auf. 3. Fügen Sie die Tabelle direkt mit dem Menübefehl Bearbeiten/Einfügen wieder ein. Access blendet das in Abbildung 19.12 gezeigte Dialogfeld ein, in dem Sie bestimmen können, wie die neue Tabelle heißen soll und ob Struktur und/oder Daten eingefügt werden sollen. In unserem Fall soll nur die Struktur der kopierten Datenbank eingefügt werden. Abbildung 19.12: Tabellenstruktur neu einfügen 296 Kapitel 19

Nach der Bestätigung des Dialogfeldes wird eine neue Tabelle angelegt, die die gleichen Felder und Indizes wie die Tabelle tblkinokasse enthält. Daten hinzufügen 1. Erstellen Sie einen Abfrageentwurf mit der Tabelle tblkinokasse. 2. Definieren Sie nun die Abfrage als Anfügeabfrage. Sie werden so zuerst nach dem Namen der Tabelle gefragt, an die angefügt werden soll. In unserem Fall ist dies die gerade neu angelegte Tabelle tblkinokassearchiv. Abbildung 19.13: Anfügen an Tabelle tblkinokasse- Archiv CAbfragen Beim Anfügen von Daten muss prinzipiell darauf geachtet werden, dass die Datentypen der Felder zueinander passen, d.h. der Typ des entsprechenden Feldes der Anfügeabfrage muss mit dem Typ des Tabellenfeldes der Anfügetabelle übereinstimmen. Die Namen der Felder können unterschiedlich sein. Abbildung 19.14: Anfügeabfrage zu Archivierung Um das Datum, bis zu dem die Datensätze archiviert werden sollen, flexibel eingeben zu können, wurde als Bedingung für die Spalte Datum ein Parameter angegeben. Der Parameter Archivierungsdatum ist zusätzlich über den Menübefehl Abfrage/Parameter als vom Datentyp Datum/Zeit festgelegt, damit Fehler bei der Eingabe des Parameters vermieden werden. Abbildung 19.15: Eingabe des Parameterwertes Aktionsabfragen 297

Nach der Bestätigung des Parameterdialogfeldes wird die Abfrage ausgeführt. Bevor Access die Datensätze tatsächlich der Anfügetabelle anhängt, wird eine Bestätigungsmeldung eingeblendet. Abbildung 19.16: Bestätigungsmeldung Als nächster Schritt zur erfolgreichen Archivierung bleibt jetzt nur noch, die an die Tabelle tblkinokassearchiv angefügten Daten aus der Tabelle tblkinokasse zu löschen. Hierzu könnten Sie die Löschabfrage verwenden. Löschabfragen werden in diesem Kapitel im X Abschnitt»Löschabfragen«ausführlich erläutert. Abbildung 19.17: Löschabfrage zur Archivierung Anfügefehler Sollte Access die Datensätze nicht anfügen können, wird eine entsprechende Fehlermeldung gezeigt. Dazu führt die folgende Tabelle die Fehler auf, die beim Anfügen von Daten vorkommen können. FehlertypEntstehung Typumwandlungsfehler Treten auf, wenn sich der Typ eines Feldes in der Herkunftstabelle vom Typ in der Anfügetabelle unterscheidet, und Access eine Umwandlung nicht vornehmen kann. Tabelle 19.1: Mögliche Anfügefehler Schlüsselverletzungen Sperrverletzungen Gültigkeitsregelverletzungen Können entstehen, wenn Sie versuchen, einen Wert in eine als eindeutiger Index definierte Spalte anzufügen, der dort schon vorhanden ist. Bedeuten, dass die Datensätze nicht angefügt werden können, da die Anfügetabelle durch einen anderen Benutzer gesperrt ist. Zeigen an, dass die anzufügenden Daten nicht den für die Anfügetabelle vereinbarten Gültigkeitsregeln entsprechen. 298 Kapitel 19

Neue Tabellen mit Abfragen erstellen Präfix»qmak«Die Tabellenerstellungsabfrage ermöglicht es, das Ergebnis einer Abfrage als neue Tabelle zu speichern. Die Einstellungen und Bedingungen für eine Tabellenerstellungsabfrage gleichen denen der Anfügeabfrage. Bei der Bestimmung einer Abfrage als Tabellenerstellungsabfrage werden Sie von Access gefragt, welchen Namen die neue Tabelle erhalten soll. Danach nehmen Sie in der Entwurfsansicht eine Auswahl der Felder vor, die in die neue Tabelle aufgenommen werden sollen. Die Felder der neuen Tabelle erhalten den gleichen Datentyp und den gleichen Namen wie die Felder der Herkunftstabellen. Möchten Sie einen anderen Feldnamen für die neue Tabelle vereinbaren, definieren Sie in der Entwurfsansicht einen Alias-Namen, beispielsweise Titel des Films:Filmtitel. Speichern Sie diese Abfragen mit dem Typkürzel»qmak«, wobei»mak«als Abkürzung für»maketable«steht. Beginnen Sie mit einer Auswahlabfrage, in der Sie die später in der neuen Tabelle gewünschten Felder und gegebenenfalls Auswahlbedingungen definieren. Wählen Sie dann in der Abfrage-Entwurfsansicht Abfrage/Tabellenerstellungsabfrage. Der Name der Tabelle, die neu erstellt werden soll, wird im Dialogfeld Neue Tabelle erstellen angegeben. CAbfragen Abbildung 19.18: Benennung der neuen Tabelle Abbildung 19.19: Definition der Tabellenerstellungsabfrage Die Abbildung 19.19 zeigt die fertige Abfragedefinition für die Tabellenerstellungsabfrage. Möchten Sie den Namen der zu erstellenden Tabelle ändern, rufen Sie dazu das Dialogfeld Abfrageeigenschaften auf, indem Sie in den oberen Bereich der Entwurfsansicht doppelklicken, die Schaltfläche Eigenschaften anklicken oder den Menübefehl Ansicht/Eigenschaften wählen. Aktionsabfragen 299

Abbildung 19.20: Dialogfeld Abfrageeigenschaften In der Zeile Zieltabelle sehen Sie den Namen der zu erstellenden Tabelle. Löschabfragen Eine Löschabfrage entfernt unter bestimmten Bedingungen Datensätze aus einer oder mehreren Tabellen, die in einer 1:1-Beziehung stehen. Es sollen alle Datensätze einer Tabelle, hier zum Beispiel der Tabelle tblartikelverkauf, gelöscht werden. Die Lösung des Problems ist einfach: Definieren Sie eine Auswahlabfrage, die alle Datensätze der Tabelle tblartikelverkauf als Ergebnis hat, und konvertieren Sie diese über den Menübefehl Abfrage/Löschabfrage. DIE AUFGABE DIE LÖSUNG Abbildung 19.21: 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.2001 stehen haben, so ändern Sie die Abfrage wie folgt ab: DIE AUFGABE 300 Kapitel 19

CAbfragen DIE LÖSUNG Nehmen Sie das Feld Datum in den unteren Bereich im Abfrageentwurfsfenster auf. In der Zeile Löschen wird dabei automatisch Bedingung eingetragen. Geben Sie dann in der Zeile Kriterium die entsprechende Auswahlbedingung an. Abbildung 19.22: Löschen aller Daten, die ein Datum vor dem 1.5.2001 aufweisen DIE AUFGABE DIE LÖSUNG Nun sollen nur diejenigen Daten gelöscht werden, die ein Datum vor dem 1.5.2001 aufweisen und der Produktgruppe 034 angehören. Die Produktgruppe ist Bestandteil der Artikelnummer. Die Formel Links([Artikelnummer];3) schneidet aus der Artikelnummer die Produktgruppe heraus. Diese Formel wird als Löschbedingung erfasst, wie es Abbildung 19.23 zeigt. Abbildung 19.23: Berechnetes Feld für die Löschbedingung HINWEIS Präfix»qdel«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 Löschweitergabe an Detaildatensatz eingeschaltet, werden von Access beim Löschen automatisch auch die entsprechenden Datensätze auf der»n«-seite eliminiert. Löschabfragen sollten mit dem Präfix»qdel«(für delete) abgelegt werden. Aktionsabfragen 301

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 5.4.2001 lagen. In der Entwurfsansicht in Abbildung 19.24 wird die Problemstellung dargestellt. Abbildung 19.24: Verknüpfte Löschabfrage 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-assistenten 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 vorstellen, 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 definiert ist. Gegebenenfalls müssen Sie zuerst einen Primärschlüssel, am einfachsten in Form eines AutoWert-Feldes, hinzufügen. Zum Löschen der Duplikate benötigen Sie eine Auswahl- und eine Löschabfrage. In unserem Beispiel 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. Die Abbildung 19.25 zeigt die Auswahlabfrage in der Entwurfsansicht. 302 Kapitel 19

CAbfragen Abbildung 19.25: 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 Ergebnis von qrydoppeltefilme enthalten sind. Dieses erreichen Sie (wie die Abbildung 19.26 zeigt) durch eine Löschabfrage mit Unterabfrage. Vollständige Informationen zum Thema Unterabfragen erhalten Sie in X Kapitel 20. Abbildung 19.26: Löschabfrage mit Unterabfrage In der Kriterien-Zeile zu FilmNr sehen Sie auf der rechten Seite, in Klammern eingeschlossen, eine SELECT-Abfrage. Diese Abfrage hat als Ergebnis alle Filmnummern der Abfrage qrydoppeltefilme zur Folge. Durch die Anweisung Nicht In wird erreicht, dass die Filme gelöscht werden, die nicht zur Ergebnismenge der Abfrage qrydoppeltefilme gehören. Aktionsabfragen 303