Abfragen zur Analyse Ihrer Daten 5 Abfragen zur Analyse Ihrer Daten Ziele dieses Kapitels A Sie lernen, was eine Abfrage ist. A Sie erfahren, was eine Verknüpfung ist. A Sie lernen verschiedene Abfragetypen kennen. A Sie lernen die formularbasierte Abfragetechnik kennen. Projektaufgabe in diesem Kapitel 1. Sie erstellen eine Abfrage („QRY_Adressen“) für die Tabelle „Adressen“ unter Anwendung der formularbasierten Abfragetechnik. Microsoft® Office Access 2003 Aufbau - 61 - Abfragen zur Analyse Ihrer Daten 5.1 Was sind Abfragen? Wenn Sie eine Tabelle und eine Abfrage jeweils in der Datenblattansicht öffnen, werden Sie auf den ersten Blick keinen großen Unterschied zwischen diesen beiden Datenbankobjekten feststellen können. Abb. 5.1: Vergleich einer Tabelle (oben) mit einer Auswahlabfrage Tatsächlich können Sie eine Abfrage mit den gleichen Verfahren bearbeiten wie das Datenblatt einer Tabelle. Im Gegensatz zu einer Tabelle, in die Sie Daten direkt eingeben können, speichern Sie mit einer Abfrage keine Daten, sondern lediglich Regeln, mit denen Access auf die Daten einer Tabelle zugreifen soll. Das Ergebnis einer Abfrage heißt „Dynaset“. Dynasets sind nur so lange aktiv wie eine Abfrage geöffnet ist. Wenn Sie eine Abfrage öffnen, bildet Access unter Verwendung dieser Regeln den Dynaset. Schließen Sie die Abfrage, wird der Dynaset wieder gelöscht. Abfragen oder Dynasets benötigen daher kaum Speicherplatz in einer Datenbankdatei. Eine Abfrage kann ihrerseits auch eine oder mehrere andere Abfragen als Datenquelle(n) verwenden. Zu irgendeinem Zeitpunkt jedoch muss eine dieser Abfragen auf eine Tabelle zugreifen, um Zugang zu den gespeicherten Daten zu erhalten, sonst wäre die Abfrage mangels Daten sinnlos. - 62 - © ikon VerlagsGesmbH, 2004 Abfragen zur Analyse Ihrer Daten 5.1.1 SQL — Das Geheimnis einer Abfrage Wenn Sie mit Abfragen arbeiten, stoßen Sie früher oder später auf den Begriff der SQL(„Structured Query Language“)-Anweisung. Genau genommen, genau jetzt! SQL ist eine Sprache, mit der Sie die Daten in einer Datenbank abrufen, sortieren und filtern können. Hinter jeder Abfrage steht eine entsprechende SQL-Anweisung, die je nach Art der Abfrage sehr komplexe Strukturen annehmen kann. Abb. 5.2: Eine SQL-Anweisung in der SQL-Ansicht einer Abfrage Bei SQL handelt es sich um eine Sprache, die von vielen Datenbanksystemen sozusagen in unterschiedlichen Dialekten gesprochen genutzt wird. Im Regelfall ist es in Access ausreichend, den speziellen Dialekt zu beherrschen, den Access verwendet. Erstellen Sie eine Abfrage, erstellt Access die entsprechenden SQL-Anweisungen automatisch für Sie im Hintergrund. Letztlich bietet die Entwurfsansicht einer Abfrage lediglich eine visuell geprägte Umgebung, um SQL-Anweisungen erstellen zu können. Wenn Sie in Access mit einer Abfrage alle Datensätze aus der Tabelle „Artikel“ in der Beispieldatenbank „Nordwind.mdb“ ausgeben möchten, deren Artikelname mit einem „C“ beginnt, müssten Sie die folgende Abfrage erstellen: Abb. 5.3: Auswahlabfrage in der Entwurfsansicht Microsoft® Office Access 2003 Aufbau - 63 - Abfragen zur Analyse Ihrer Daten Wenn Sie das Pendant zu dieser Abfrage in einer Projektdatei erstellen möchten, die mit einem SQL-Server verbunden ist, würden Sie in der Projektdatei die folgende Sicht erstellen: Abb. 5.4: Die gleiche Auswahlabfrage als Sicht in einer Projektdatei Beide Abfragen liefern jeweils die gleichen Datensätze zurück. Entscheidend an dieser Stelle ist der Unterschied in der Syntax der „Where“-Klausel der SQL-Anweisung. In der Jet-Datenbank lautet diese: „WHERE (((Artikel.Artikelname) Like "C*"));” In der SQL-Server-Datenbank lautet die Anweisung: „WHERE (Artikelname LIKE N'C%')”. Was uns an dieser Stelle beispielhaft interessiert, ist die unterschiedliche Wildcard, also das Zeichen, das als Joker für jede beliebige Zeichenfolge steht, die in unserem Beispiel dem ersten Buchstaben des Abfragekriteriums („C“) folgt. Access verwendet das Sternchen („*“) als Wildcard, während der SQL-Server in seinem eigenen „Dialekt“ das Prozentzeichen („%“) verwendet. Wenn Sie nun über die ODBCSchnittstelle und eingebundene Tabellen auf die Daten eines SQL-Servers zugreifen, wird der ODBC-Treiber unter anderem für die Übersetzung des Sternchens in ein Prozentzeichen sorgen. Wie Sie noch sehen werden, machen es bestimmte Abfragetypen in Jet-Datenbanken in Access notwendig, dass Sie sich auch mit den Dialekten anderer Datenbanksysteme auseinandersetzen. - 64 - © ikon VerlagsGesmbH, 2004 Abfragen zur Analyse Ihrer Daten 5.2 Verknüpfungen Durch Abfragen lassen sich Daten aus verschiedenen Tabellen nahezu beliebig miteinander kombinieren. Über eine Verknüpfung zwischen zwei Tabellen in der Entwurfsansicht einer Abfrage legen Sie fest, wie die Daten der Tabellen untereinander in Verbindung stehen. Abb. 5.5: Verknüpfungen zwischen zwei Tabellen im Abfrageentwurf Wenn Sie keine Verknüpfung zwischen den Tabellen herstellen, zeigt Access jede mögliche Kombination der Datensätze zwischen den beiden Tabellen an. Wenn Tabelle „A“ also beispielsweise drei Datensätze und Tabelle „B“ ebenfalls drei Datensätze beinhaltet, gibt die Abfrage insgesamt neun Datensätze zurück. Solche Ergebnisse heißen auch „Kreuzprodukt“ oder „kartesisches Produkt“. Bedingt durch diese Kombination kann es zu unbrauchbaren Ergebnissen und langen Abfragedauern kommen. Um sicherzustellen, dass eine Abfrage brauchbare Ergebnisse liefern kann, müssen Sie sicherstellen, dass die Tabellen durch eine Verknüpfung miteinander verbunden sind. Sofern bereits eine Beziehung zwischen den in einer Abfrage verwendeten Tabellen besteht, wird Access Ihnen vorschlagen, diese Beziehung zu verwenden. Sie können diesen Vorschlag jedoch verwerfen und im Abfrageentwurf ähnlich wie im „Beziehungen“-Fenster neue Verknüpfungen erstellen. Die in der Entwurfsansicht einer Abfrage definierten Verknüpfungen zwischen Tabellen haben nur für diese eine Abfrage Gültigkeit. Sie können über eine Abfrage keine dauerhaften Beziehungen erstellen oder bestehende Beziehungen zwischen Tabellen löschen. Während Sie über Verknüpfungen die Zusammenhänge der Daten unterschiedlicher Tabellen definieren, gibt der Verknüpfungstyp an, welche Datensätze Sie durch eine Abfrage auswählen oder bearbeiten. Grundsätzlich unterscheidet man in Access zwischen zwei Verknüpfungstypen: A Exklusionsverknüpfungen A Inklusionsverknüpfungen Microsoft® Office Access 2003 Aufbau - 65 - Abfragen zur Analyse Ihrer Daten 5.2.1 Exklusionsverknüpfungen Die Exklusionsverknüpfung ist die Standardverknüpfung, die Ihnen Access bei der Verknüpfung zweier Tabellen in einer Abfrage anbietet. Sie bewirkt, dass die Abfrage in den verknüpften Feldern nach übereinstimmenden Werten sucht. Access kombiniert und zeigt nur die Datensätze aus zwei Tabellen an, wenn die Werte der miteinander verknüpften Felder in beiden Tabellen übereinstimmen. Anhand der übereinstimmenden Werte fasst Access die Informationen aus beiden Tabellen in der Abfrage zu einem Datensatz zusammen. Sind keine übereinstimmenden Werte vorhanden, enthält das Ergebnis der Abfrage keine Datensätze. 5.2.2 Inklusionsverknüpfungen Inklusionsverknüpfungen zeigen alle Datensätze einer Tabelle an, unabhängig davon, ob Access Übereinstimmungen in dem verknüpften Feld in einer zweiten Tabelle gefunden hat. Aus der zweiten Tabelle hingegen kombiniert Access nur dann Datensätze mit den Datensätzen aus der ersten Tabelle, wenn die verknüpften Felder beider Tabellen übereinstimmende Werte enthalten. Bei einer Verknüpfung gibt es stets eine linke und eine rechte Tabelle, die über jeweils ein Feld in jeder Tabelle miteinander verknüpft sind. Abhängig sozusagen von der Position der Tabelle unterscheidet Access die folgenden Inklusionsverknüpfungen: A linke Inklusionsverknüpfungen A rechte Inklusionsverknüpfungen Linke Inklusionsverknüpfung Linke Inklusionsverknüpfungen zeigen alle Datensätze aus der linken Tabelle an, auch wenn Access für die Werte des verknüpften Feldes keine Übereinstimmungen in der rechten Tabelle finden kann. Dagegen zeigt Access Datensätze aus der rechten Tabelle nur dann an, wenn die Werte des verknüpften Feldes Übereinstimmungen in der linken Tabelle haben. Rechte Inklusionsverknüpfung Rechte Inklusionsverknüpfungen zeigen alle Datensätze aus der rechten Tabelle an, auch wenn es für die Werte des verknüpften Feldes keine Übereinstimmungen in der linken Tabelle gibt. Dagegen sehen Sie Datensätze aus der linken Tabelle nur dann, wenn die Werte des verknüpften Feldes Übereinstimmungen in der rechten Tabelle haben. Die Aussage, dass die Art der Inklusionsverknüpfung von der Position der Tabelle abhängt, ist nur bedingt richtig. Sie legen eine linke (erste) und eine rechte (zweite) Tabelle fest, unabhängig von der tatsächlichen Position der Tabellen in der Bildschirmanzeige. - 66 - © ikon VerlagsGesmbH, 2004 Abfragen zur Analyse Ihrer Daten Abb. 5.6: Festlegung der Verknüpfungsart - Verknüpfungseigenschaften im Abfragentwurf Sie können zunächst zwischen zwei Tabellen einfach eine Verknüpfung mit gedrückter linker Maustaste herstellen. Im zweiten Schritt legen Sie dann fest, ob Sie eine Exklusionsverknüpfung, eine linke Inklusionsverknüpfung oder eine rechte Inklusionsverknüpfung definieren möchten. Rechtsklicken Sie dazu die Verknüpfung und wählen Sie aus dem Kontextmenü die Verknüpfungseigenschaften. Sie erhalten die oben zu sehende Dialogbox, in der Sie die Art der Verknüpfung definieren und mit OK bestätigen. 5.3 Abfragen und Kriterien Der am meisten verbreitete Abfragetyp, mit dem Sie bei der Arbeit mit Access Kontakt haben werden, ist die so genannte Auswahlabfrage. Auswahlabfragen rufen Daten aus einer oder mehreren Tabelle(n) oder Abfrage(n) ab, kombinieren diese und zeigen sie in einem Datenblatt an. Sie können Auswahlabfragen zur Filterung der Daten, Einschränkung der Datenmenge oder für Berechnungen auf der Grundlage der gespeicherten Daten verwenden. Sie können in dem Datenblatt einer Auswahlabfrage auch Daten verändern oder neue Datensätze hinzufügen. In jedem Fall werden diese Änderungen jedoch in den als Datenquellen für diese Abfrage dienenden Tabellen gespeichert. Um die Datenmenge in Abfragen einzuschränken, verwenden Sie Kriterien. Microsoft® Office Access 2003 Aufbau - 67 - Abfragen zur Analyse Ihrer Daten 5.3.1 Unterabfragen zur Definition von Kriterien Per Definition gehören Unterabfragen zu den SQL-Abfragen. Im Gegensatz zu den anderen Vertretern dieses Abfragetyps – Union-, Pass-Through- und Datendefinitions-Abfragen – können Sie Unterabfragen nicht separat ausführen. Zudem sind Unterabfragen nicht als eigenständige Datenbankobjekte im Datenbankfenster abrufbar. Verwechseln Sie Unterabfragen nicht mit Abfragen, die als Datenquellen für eine zweite Abfrage dienen. Unterabfragen werden innerhalb einer Auswahl- oder Aktionsabfrage ausgeführt und können verschiedenen Zwecken dienen. Sie können Unterabfragen zum Beispiel dazu verwenden, um Kriterien für Abfragen zu definieren. Kriterien dienen dazu, um über eine Abfrage Daten aus einer Tabelle abzurufen, die einer bestimmten Bedingung – einem Kriterium – entsprechen. Bestimmte Kriterien werden Sie direkt in die Zeile Kriterien eines Feldes im Abfrageentwurf eintragen können, da Sie deren Wert genau kennen und sich dieser Wert nicht verändert. Dies ist die einfachste Art, Kriterien zu definieren. Abb. 5.7: Auswahlabfrage mit festem Kriterium („Wie ‚München’“) in der Entwurfsansicht Andere Kriterien hingegen sind unter Umständen variabel, setzen sich aus mehreren logischen Verknüpfungen zusammen oder beinhalten in sich Bedingungen. Zur Definition solcher Kriterien dieser Art können Sie Unterabfragen verwenden. - 68 - © ikon VerlagsGesmbH, 2004 Abfragen zur Analyse Ihrer Daten Abb. 5.8: Entwurfsansicht (Auswahlabfrage) mit einer Unterabfrage zur Definition von Kriterien In diesem Beispiel verwenden Sie für eine Auswahl der Datensätze der Tabelle „Adressdetails“ eine Kundennummer als Kriterium. Die Kundennummer wird anhand einer Bedingung („Vorname des Kunden = Max“) in der Tabelle „Adressen“ selektiert. 5.3.2 Abfragen mit wechselnden Kriterien Sie können in Abfragen Kriterien für eine Abfrage fest vorgeben, indem Sie das Kriterium für jedes Feld in die Zeile „Kriterien“ im Abfrageentwurf eingeben. Diese Vorgehensweise ist für bestimmte Aufgaben durchaus ausreichend, wenn es zum Beispiel um die Anzeige der Adressen für einen bestimmten Wohnort geht. Sie können dann den entsprechenden Ort als Kriterium in den Abfrageentwurf eingeben. Wenn Sie nun aber die Adressen für mehrere Orte wahlweise anzeigen möchten, müssten Sie entweder: A für jeden Wohnort eine eigene Abfrage erstellen oder A die Abfrage in der Entwurfsansicht öffnen und das Kriterium neu festlegen. Beide Alternativen sind für den einfachen Umgang mit einer Datenbank ungeeignet. Parameterabfragen Wenn Sie zur Eingrenzung der Datenmenge eine Abfrage erstellen möchten, für die sich die Kriterienwerte beständig ändern oder deren Werte Sie nicht genau kennen, entwerfen Sie eine so genannte Parameterabfrage. Anstelle eines festen Kriteriums geben Sie in den Kriterienbereich einer Abfrage eine Aufforderung zur Eingabe von Abfrageparametern in eckigen Klammern ein. Microsoft® Office Access 2003 Aufbau - 69 - Abfragen zur Analyse Ihrer Daten Abb. 5.9: Parameterabfrage in der Entwurfsansicht Sobald Sie diese Abfrage aufrufen, blendet Access vorm Ausführen der Abfrage ein Dialogfeld ein, in dem Sie das geforderte Kriterium eintippen und mit OK bestätigen. Abb. 5.10: Dialog einer Parameterabfrage zur Eingabe von Abfrageparametern Erst wenn Sie in diesem Dialogfeld die entsprechenden Suchkriterien eingegeben haben, führt Access die Abfrage aus und zeigt das Ergebnis in der Datenblattansicht der Abfrage. Die formularbasierte Abfragetechnik Je weiter Ihre Datenbank zu einer Anwendung reift, desto mehr werden Sie sich wünschen, eine elegantere Form der Datenpräsentation und Dialogoberflächen zur Kommunikation mit dem Benutzer der Datenbank zu erhalten. Hier kommen Formulare ins Spiel. Sie können mit der formularbasierten Abfragetechnik über Formulare professionelle Oberflächen für die Verwendung von Abfragen gestalten und die Funktionalität eines Dialogfeldes für die Eingabe von Abfrageparametern gewährleisten. - 70 - © ikon VerlagsGesmbH, 2004 Abfragen zur Analyse Ihrer Daten Projektaufgabe B Sie erstellen eine Auswahlabfrage als Parameterabfrage. Dabei erstellen Sie statt einer Aufforderung zur Dateneingabe einen Verweis auf ein Formularfeld, das später als Eingabefeld für Parameterwerte fungieren soll. (Das entsprechende Formular erstellen Sie zu einem späteren Zeitpunkt!) 1. Öffnen Sie Ihre „Übungsdatenbank.mdb“. 2. Klicken Sie im Bereich „Objekte“ auf Abfragen und anschließend auf Erstellt eine neue Abfrage in der Entwurfsansicht. 3. Markieren Sie im Register Tabellen die Tabelle Adressen und klicken auf Hinzufügen. Klicken Sie danach auf Schließen, um das Dialogfeld zu schließen. 4. Fügen Sie der Abfrage die Felder Kundennummer, Vorname, Name, Postleitzahl und Ort hinzu. Am einfachsten können Sie Felder hinzufügen, indem Sie in der Feldliste der Datenquelle einen Doppelklick auf den jeweiligen Feldnamen machen. 5. Klicken Sie in die Zeile Kriterien des Feldes „Name“. Geben Sie in die Zeile den folgenden Ausdruck ein und drücken Sie anschließend die -Taste: [Formulare]![FRM_Suchformular]![Kriterium] 6. Speichern Sie die Abfrage und geben Sie ihr den Namen QRY_Adressen. Sie haben nun eine Parameterabfrage erstellt, die in der Lage ist, anstatt der von Access vorgegebenen Dialogfelder ein Formular („FRM_Suchformular“) für die Eingabe von Parameterwerten zu verwenden. Die Datensätze werden anhand des Nachnamens in der Tabelle „Adressen“ selektiert. Denken Sie an dieser Stelle daran, dass die Abfrage noch nicht funktionieren kann, weil das Formular noch nicht existiert. Das werden wir zu einem späteren Zeitpunkt erstellen. 5.4 SQL-spezifische Abfragen Während im Grunde hinter allen Abfragen eine SQL-Anweisung steht, können Sie SQLspezifische Abfragen nur unter direkter Verwendung einer SQL-Anweisung erstellen. Sie können Union-, SQL Pass-Through- und Datendefinitionsabfragen in der Entwurfsansicht einer Abfrage über das Menü Abfrage, S QL-spezifisch erstellen. 5.4.1 SQL Pass-Through-Abfragen „Pass-Through“-Abfragen sind in der Regel die schnellste und effektivste Alternative, um aus einer Access-Datenbank auf die Daten eines Datenbankservers zuzugreifen. Wenn Sie die Tabellen einer SQL-Server-Datenbank über die ODBC-Schnittstelle in eine AccessDatenbank einbinden, übernimmt Access die vollständige Arbeit der Datenabfrage, das Selektieren sowie das Sortieren der Datensätze. Microsoft® Office Access 2003 Aufbau - 71 - Abfragen zur Analyse Ihrer Daten Mit einer SQL-Pass-Through-Abfrage dagegen senden Sie Befehle direkt an den Datenbankserver und fordern so die Daten von dem Datenbankserver an. Dabei übernimmt die Serveranwendung die Arbeit des Datenabrufs, der Selektion sowie des Sortierens und gibt lediglich das Ergebnis der Abfrage an Access zurück. Dieser Vorgang ist im Vergleich zu herkömmlichen Auswahlabfragen weitaus effizienter. Der Vorteil dieser Abfragen liegt darin, dass sich durch ihre Verwendung die Geschwindigkeit der Anwendung bei einer steigenden Anzahl von Datensätzen beschleunigen lässt. Mit Pass-Through-Abfragen umgehen Sie die Übersetzungsarbeit, die der ODBC-Treiber bei der Übermittlung der Befehle sonst übernehmen müsste. In Pass-Through-Abfragen müssen Sie deshalb die Befehle in der SQL-Syntax verwenden, die die jeweilige Serveranwendung unterstützt. Die folgende Übung setzt voraus, dass entweder eine Verbindung zur SQL Server 2000 Desktop Engine oder einem SQL-Server vorhanden ist und dort die NordwindBeispieldatenbank installiert ist. Rufen Sie aus dem Verzeichnis „C:\Programme\Microsoft Office\OFFICE11\SAMPLES“ die Beispieldatenbank „Nordwindcs.adp“ auf. (Dazu ist es eventuell nötig, die Datei „nordwindcd.sql“ in „northwindcd.sql“ umzubenennen, weil Access andernfalls eine Fehlermeldung erzeugt!) Im Falle, dass sich das Nordwind-Projekt noch nicht auf dem Server befindet, wird Access eine neue Projektdatei erstellen, auf dem Server eine neue Datenbank erstellen und die Tabellen der Nordwind-Beispieldatenbank einrichten. Klicken Sie dazu bei der entsprechenden Anfrage einfach auf Ja und OK. Schließen Sie dann diese Datenbank und öffnen stattdessen die Datenbank „Nordwind.mdb“. Wechseln Sie in das Datenbankfenster. B Sie erstellen eine „SQL-Pass-Through“-Abfrage . 1. Klicken Sie auf Einfügen, Abfragen und doppelklicken den Eintrag Entwurfsansicht. 2. Im Dialogfeld „Tabelle anzeigen“ klicken Sie auf Schließen. Das Dialogfeld „Tabelle anzeigen“ wird geschlossen. Im Abfrageentwurf sind dementsprechend keine Tabellen oder Abfragen zu sehen. 3. Klicken Sie auf Abfrage, SQL-spezifisch und wählen die Option Pass-Through. 4. Sie sehen nun die SQL-Ansicht der „Pass-Through“-Abfrage vor sich. Geben Sie in dieses Fenster die folgende Anweisung ein, die Sie bereits am Anfang dieses Kapitels kennen gelernt haben: SELECT Artikel.* FROM Artikel WHERE (Artikelname LIKE 'C%') Vergegenwärtigen Sie sich noch einmal, dass Sie hier den Dialekt des SQLServers verwenden! 5. Speichern Sie die Abfrage als SQL-Query. - 72 - © ikon VerlagsGesmbH, 2004 Abfragen zur Analyse Ihrer Daten Sie haben nun eine Pass Through-Abfrage erstellt, die von dem Datenbankserver sämtliche Datensätze aus der Tabelle Artikel anfordert, in denen der Artikelname mit dem Buchstaben „C“ beginnt. Sie befinden sich in einer Jet-Datenbank und greifen auf eine Tabelle des SQL-Servers oder der MSDE zu. Woher bezieht Access nun aber die Informationen, in welcher Datenbank sich diese Tabelle befindet und auf welchem Server die Datenbank vorhanden ist? Access benötigt dazu eine ODBC-Datenquelle, die die notwendigen Informationen zur Herstellung der Verbindung zu der Datenbank und dem Server bereitstellt. Rufen Sie dazu die Pass-Through-Abfrage in der Datenblattansicht auf. Access wird Sie auffordern, eine „DSN“ anzugeben, um die Verbindung herstellen zu können. Abb. 5.11: Dialog zur Auswahl einer ODBC-Datenquelle Wenn Sie noch keine geeignete DSN erstellt haben, bietet Ihnen Access hier die Möglichkeit eine neue DSN in der bereits bekannten Art und Weise zu erstellen. Alternativ dazu können Sie die Verbindungsinformationen in die Zeile ODBC-Verbindung in den Abfrageeigenschaften der Pass-Through-Abfrage eintragen, um diese dauerhaft mit der Abfrage zu speichern. Wenn Sie für diese Eigenschaft keine Verbindungszeichenfolge angeben, wird Access die Standardzeichenfolge „ODBC“ verwenden. In diesem Fall fordert Access Sie bei jedem Ausführen der Abfrage auf, die Verbindungsinformationen erneut anzugeben. Microsoft® Office Access 2003 Aufbau - 73 - Abfragen zur Analyse Ihrer Daten 5.4.2 Datendefinitionsabfragen Sie können mit Datendefinitionsabfragen in der aktuellen Datenbank Tabellen erstellen, ändern, löschen oder Indizes erstellen. Eine Datendefinitionsabfrage besteht aus einer so genannten Datendefinitionsanweisung. Sie wissen bereits, wie Sie manuell Tabellen erstellen und diesen Tabellen einen Primärschlüssel hinzufügen können. Diese Schritte können Sie durch Datendefinitionsabfragen automatisieren. Die folgende Datendefinitionsabfrage erstellt eine neue Tabelle mit dem Namen „Privatadressen“. Abb. 5.12: Datendefinitionsabfrage in der Entwurfsansicht Folgende Datendefinitionsanweisungen stehen Ihnen in Access zur Verfügung: A Verwenden Sie CREATE TABLE, um eine neue Tabelle zu erstellen. A Verwenden Sie ALTER TABLE, um einer bestehenden Tabelle ein neues Feld oder eine Einschränkung (CONSTRAINT) hinzuzufügen. Mit „Constraint“-Klauseln können Sie zum Beispiel Felder mit einem eindeutigen Schlüssel versehen oder als Primärschlüsselfeld festlegen. A Verwenden Sie DROP, um eine Tabelle oder einen Index zu löschen. A Verwenden Sie CREATE INDEX, um einen Index für ein Feld der Tabelle zu erstellen. B Sie erstellen eine neue Tabelle mittels einer Datendefinitionsabfrage. 1. Öffnen Sie gegebenenfalls die von Ihnen erstellte „Übungsdatenbank.mdb“. Wechseln Sie in das Datenbankfenster. 2. Klicken Sie im Menü Einfügen auf Abfrage. Im Dialogfeld „Neue Abfrage“ klicken Sie zuerst auf den Eintrag Entwurfsansicht und dann auf OK. 3. Im Dialogfeld „Tabelle anzeigen“ klicken Sie auf Schließen. 4. Klicken Sie anschließend auf Abfrage, SQL-spezifisch und dann auf den Menüeintrag Datendefinition. Sie sehen ein leeres Fenster. Dies ist die Entwurfsansicht der Datendefinitionsabfrage. - 74 - © ikon VerlagsGesmbH, 2004 Abfragen zur Analyse Ihrer Daten 5. Geben Sie in das Fenster bitte folgende Anweisungen ein: CREATE TABLE Privatadressen ([Kundennummer] integer, [Nachname] Text, [Vorname] Text, [Postleitzahl] Text, [Wohnort] Text, CONSTRAINT[Primary] PRIMARY KEY ([Kundennummer])); Diese Anweisung hat folgende Auswirkungen: A CREATE TABLE Privatadressen Access erstellt eine neue Tabelle mit dem Namen „Privatadressen“. A ([Kundennummer] integer In der Tabelle „Privatadressen“ erstellt Access ein neues Feld mit dem Namen „Kundennummer“, dem Felddatentyp „Zahl“ und der Feldgröße „Integer“. A [Nachname] Text In der Tabelle „Privatadressen erstellt Access ein neues Feld mit dem Namen „Nachname“ und dem Felddatentyp „Text“. A [Vorname] Text In der Tabelle „Privatadressen“ erstellt Access ein neues Feld mit dem Namen „Vorname“ und dem Felddatentyp „Text“. A [Postleitzahl] Text In der Tabelle „Privatadressen“ entsteht ein neues Feld mit dem Namen „Postleitzahl“ und dem Felddatentyp „Text“. A [Wohnort] Text In der Tabelle „Privatadressen“ erstellt Access ein neues Feld mit dem Namen „Wohnort“ und dem Felddatentyp „Text“. A CONSTRAINT[Primary] PRIMARY KEY ([Kundennummer])) Access deklariert das Feld „Kundennummer“ als Primärschlüsselfeld. Zu diesem Zweck erstellt Access einen neuen Index: Indexname: Primary Feldname: Kundennummer Indexeigenschaft Einstellung Primärschlüssel Ja Eindeutig Ja Nullwerte ignorieren Nein 6. Klicken Sie auf das Symbol für „Speichern“, um die Abfrage dauerhaft in Ihrer Datenbankdatei zu speichern. Geben Sie als Abfragenamen Qry_Erstellung_Privatadressen ein und klicken auf OK, um den Speichervorgang abzuschließen. Microsoft® Office Access 2003 Aufbau - 75 - Abfragen zur Analyse Ihrer Daten 7. Doppelklicken Sie anschließend die Abfrage, um sie auszuführen. 8. Bestätigen Sie die Sicherheitsabfrage mit Ja. 9. Öffnen Sie anschließend die Tabelle Privatadressen im Entwurfsmodus, um sich das Ergebnis der Datendefinitionsabfrage anzuschauen. Abb. 5.13: Ergebnis der mittels Datendefinitionsabfrage erstellten Tabelle Sie haben Ihrer Datenbank eine neue Tabelle mit dem Namen „Privatadressen“ hinzugefügt. Sobald Sie die Abfrage einmal ausgeführt haben, ist die neue Tabelle im Datenbankfenster aufrufbar. Bevor Sie die Abfrage erneut ausführen können, müssen Sie die Tabelle zuvor löschen oder umbenennen. 5.4.3 Union-Abfragen Union-Abfragen kombinieren die Informationen in den Feldern mehrerer Tabellen in einem Feld. Sie können auf diese Art und Weise die Informationen aus zwei Tabellen in einer Abfrage zusammenfassen. Sie können Union-Abfragen nicht aktualisieren. Sie dienen primär zur Zusammenfassung und Anzeige von Daten. Sie können eine Union-Abfrage jedoch als Datenherkunft für eine Tabellenerstellungsabfrage verwenden und so die Informationen aus mehreren Tabellen in einer neuen Tabelle konsolidieren. - 76 - © ikon VerlagsGesmbH, 2004 Abfragen zur Analyse Ihrer Daten Abb. 5.14: SQL-Ansicht einer Union-Abfrage zur Zusammenfassung der Daten aus zwei Tabellen. Union-Abfragen bieten die einzige Möglichkeit, Daten ohne gemeinsames Merkmal aus unterschiedlichen Tabellen in einer Abfrage zusammenzuführen. Jede andere Art von Abfrage wird lediglich die Datensätze aus zwei unterschiedlichen Tabellen anzeigen, deren verknüpfte Felder identische Werte aufweisen. Zusammenfassung A Eine Abfrage speichert Regeln, mit denen ein Benutzer auf die Daten einer Tabelle zugreifen kann. Das Ergebnis einer Abfrage heißt „Dynaset“. Dynasets sind nur so lange aktiv, wie eine Abfrage geöffnet ist. A Hinter jeder Abfrage steht eine SQL-Anweisung. A Um sicherzustellen, dass eine Abfrage brauchbare Ergebnisse liefern kann, müssen Sie dafür sorgen, dass die Datenquellen der Abfrage durch eine Verknüpfung miteinander verbunden sind. A Kriterien dienen dazu, um über eine Abfrage Daten aus einer Tabelle abzurufen, die einer bestimmten Bedingung entsprechen. A In einer Parameterabfrage wird der Benutzer der Datenbank zur Eingabe von Parameterwerten aufgefordert, welche die Abfrage als Kriterien für dieses Feld verwenden kann. A Die formularbasierte Abfragetechnik erlaubt es, Formulare als Eingabemasken für die Eingabe von Parameterwerten zu verwenden. A Bei Verwendung von Pass-Through-Abfragen müssen Sie die SQLAnweisungen in der vom Datenbankserver unterstützten Syntax erstellen. Microsoft® Office Access 2003 Aufbau - 77 - Abfragen zur Analyse Ihrer Daten Übungsaufgabe 7 Erstellen Sie eine Auswahlabfrage, die die Datensätze der Tabelle „Adressen“ und der Tabelle „Adressdetails“ miteinander kombiniert und alle Datensätze der Tabelle „Adressen“ beinhaltet, unabhängig davon, ob in der Tabelle „Adressdetails“ übereinstimmende Daten in dem verknüpften Feld vorhanden sind. Übungsaufgabe 8 Erstellen Sie eine Auswahlabfrage, die die Datensätze der Tabelle „Adressen“ und der Tabelle „Adressdetails“ miteinander kombiniert und alle Datensätze anzeigt, für die in beiden Tabellen übereinstimmende Werte in den verknüpften Feldern vorhanden sind. Übungsaufgabe 9 Versuchen Sie, die Daten der Tabelle „Adressen“ an die Tabelle „Privatadressen“ mit einer Anfügeabfrage anzufügen. Verwenden Sie die Tabelle „Adressen“ als Datenquelle für die Abfrage. Klicken Sie im Abfrageentwurf im Menü „Abfrage“ auf Anfügeabfrage. Wählen Sie die Tabelle „Privatadressen“ als Zieltabelle aus. Führen Sie in der Datenquelle einen Doppelklick auf die Felder aus, deren Werte Sie der Tabelle „Privatadressen“ hinzufügen möchten. Wählen Sie in der Zeile „Anfügen an“ das Feld in der Tabelle „Privatadressen“ aus, welches die Information aufnehmen soll. Da Sie Felder vom Typ „AutoWert“ als Primärschlüssel verwenden, übergehen Sie in beiden Tabellen das Feld „Kundennummer“, da es sonst zu Schlüsselverletzungen kommen könnte, wenn Sie die Abfrage mehrfach ausführen. Übungsaufgabe 10 Löschen Sie die Datensätze der Tabelle „Privatadressen“ mittels einer Löschabfrage. Klicken Sie dazu im Abfrageentwurf im Menü Abfrage auf Löschabfrage. Verwenden Sie die Tabelle „Privatadressen“ als Datenquelle für die Abfrage und führen Sie einen Doppelklick auf das Sternchen (*) in der Datenquelle aus. - 78 - © ikon VerlagsGesmbH, 2004 Abfragen zur Analyse Ihrer Daten Testaufgaben A Frage 1: Welche der folgenden Aussagen sind falsch? A. Eine Abfrage beinhaltet nie alle Datensätze der als Datenquelle dienenden Tabelle. B. Eine Abfrage speichert keine Daten. C. Eine Abfrage kann mehrere Tabellen als Datenquellen verwenden. D. Eine Auswahlabfrage verändert die Daten der als Datenquelle dienenden Tabelle. A Frage 2: Was passiert, wenn Sie in einer Abfrage zwei Tabellen, für die keine Beziehung oder Verknüpfung besteht, als Datenquellen verwenden? A. Die Abfrage kann nicht ausgeführt werden. B. Die Abfrage liefert als Ergebnis keine Datensätze zurück. C. Die Abfrage zeigt jede mögliche Kombination der Datensätze an. A Frage 3: Welche Standardverknüpfung schlägt Access bei der Erstellung von Verknüpfungen vor? A. Exklusionsverknüpfung B. Linke Inklusionsverknüpfung C. Rechte Inklusionsverknüpfung A Frage 4: Was ist eine Parameterabfrage? A. Eine Abfrage, die Kriterien verwendet B. Eine Abfrage, die den Benutzer zur Eingabe von Parameterwerten auffordert C. Eine Abfrage, in der Sie Wildcards benutzen können A Frage 5: Welchen Vorteil bietet die formularbasierte Abfragetechnik im Vergleich zu Parameterabfragen? A. Sie können die Abfrage aus einem Formular heraus aufrufen. B. Sie können in der Abfrage die Abfragekriterien variabel gestalten. C. Die Abfrage kann ein Formular als Eingabemaske für Parameterwerte verwenden. Microsoft® Office Access 2003 Aufbau - 79 -