26
Bisher haben Sie erfahren, auf welche Arten Sie Daten in Ihre Datenbank eingeben können. Nun erhalten Sie Informationen darüber, wie Sie Daten aus Ihrer Datenbank abrufen können. Eine der nützlichsten Funktionen der heutigen Datenbankanwendungen ist die Abfrage, die es Ihnen ermöglicht, »Fragen« an Ihre Datenbank zu stellen. Das Ergebnis einer solchen Abfrage (die »Antwort«) kann ausgedruckt oder auf dem Bildschirm ausgegeben werden. In diesem Kapitel wird die Abfragefunktion erklärt, und Sie erhalten Informationen darüber, wie Sie Informationen aus der Datenbank abfragen können.
Eine Abfrage ist eine Aussage, die Access mitteilt, welche Informationen Sie aus einer oder mehreren Tabellen benötigen. Mit einer Abfrage können Sie auch Aktionen auf den Tabellendaten durchführen und Daten in einer datenblattähnlichen Form zusammenfassen lassen.
Sie können Abfragen beispielsweise für die folgenden Aufgaben benutzen:
Abfragen können als Informationsquelle für Ihr Formular oder Ihren Bericht benutzt werden. In diesen Fällen ermöglicht es Ihnen die Abfrage, einzelne Informationen aus mehreren Tabellen zu benutzen. Access führt die Abfrage jedesmal durch, wenn Sie das Formular oder den Bericht öffnen, so daß Sie sicher sein können, immer über die aktuellen Informationen zu verfügen.
Mit Access ist es möglich, die folgenden Abfragetypen zu erstellen:
Für jeden Abfragetyp können Sie spezielle Abfrage-Parameter einrichten, die die Benutzer eingeben müssen, bevor die Abfrage durchgeführt wird. In der Datenbank der Videothek, die in Kapitel 22 eingeführt wurde, können Sie eine Abfrage einrichten, die eine Liste aller Filme auf der Basis der einzelnen Kundenpräferenzen ausgibt.
Access gibt die Ergebnisse einer Abfrage oder einer Filtersortierung in einem Dynaset zurück. Ein Dynaset sieht aus wie eine Tabelle und reagiert auch so. Doch im Unterschied zur Tabelle werden hier die Daten einer dynamischen Ansicht auf einer oder mehreren Tabellen gezeigt. Sie können in einem Dynaset Daten eingeben oder überarbeiten. Nachdem Sie dies getan haben, aktualisiert Access automatisch die verknüpften Tabellen. Ein Dynaset ist einem Snapshot sehr ähnlich, beide gleichen einer Tabelle. Ein Snapshot läßt sich allerdings nicht überarbeiten. Kreuztabellen- und Summierungsabfragen sind Beispiele für Snapshots.
Um eine neue Abfrage zu erstellen, klicken Sie auf die Schaltfläche Neues Objekt: Abfrage in der Symbolleiste, oder wechseln Sie in das Datenbankfenster und wählen dort die Registerkarte Abfrage. Klicken Sie dort auf die Schaltfläche Neu. Der Dialog Neue Abfrage wird geöffnet (siehe Bild 26.1). Ähnlich wie bei den Tabellen und den Formularen, so bietet Access auch für die Erstellung der Abfragen unterschiedliche Methoden an.
Abbildung 26.1: Wenn Sie sich nicht sicher sind, wie Sie eine neue Abfrage einrichten können, dann benutzen Sie den Auswahlabfrage-Assistenten.
Welche Methode Sie auch anwenden, es ist hilfreich, sich die Zeit zu nehmen, die Abfrage schon im Vorfeld zu entwerfen, also bevor Sie sie wirklich anlegen. Sie sollten zunächst die folgenden Punkte bedenken, bevor Sie beginnen:
In dem Dialog Neue Abfrage werden vier Basistypen für Abfragen bereitgehalten (siehe Bild 26.1).
Jeder Assistent wird Sie auffordern, spezifische Informationen einzugeben, die zu Erstellung des bestimmten Abfragetyps nötig sind. Auf jeden Fall müssen Sie die Tabelle oder die Abfrage angeben, auf der die neue Abfrage aufbauen soll.
Um eine Abfrage von Grund auf neu zu erstellen, wählen Sie Entwurfsansicht im Dialog Neue Abfrage. Access zeigt dann das Fenster Abfrage1: Auswahlabfrage und öffnet dann den Dialog Tabelle anzeigen (siehe Bild 26.2). Wenn Sie eine Tabelle auswählen, dann zeigt Access im Fenster der Auswahlabfrage eine Feldliste dieser Tabelle an.
Abbildung 26.2: Im Dialog Tabelle anzeigen können Sie Tabellen und andere Abfragen in Ihre neu entworfene Abfrage einbauen.
Um die Tabelle oder Abfrage auszuwählen, die Sie zu Ihrer Abfragedefinition hinzufügen wollen, klicken Sie doppelt mit der linken Maustaste darauf, oder markieren Sie den Namen der Tabelle oder der Abfrage und klicken dann auf die Schaltfläche Hinzufügen. Access fügt nun die Tabelle oder die Abfrage zum Fenster Abfrage1: Auswahlabfrage hinzu. Der Dialog Tabelle anzeigen bleibt weiterhin geöffnet, so daß Sie weitere Tabellen einfügen können, wenn dies nötig ist. Access findet automatisch jede Beziehung zwischen den unterschiedlichen Tabellen und fügt sie zur Abfragedefinition hinzu. Diese Beziehungen werden mit Linien zwischen den bezogenen Feldern angezeigt (siehe Bild 26.3).
Abbildung 26.3: Die hinzugefügten Tabellen werden im oberen Bereich der Abfrage-Entwurfsansicht angezeigt.
Access findet automatisch die Beziehungen zwischen den Tabellen und zeigt Linien zwischen den entsprechenden Schlüsselfeldern (gleicher Feldname und Feldtyp) an. Diese Linien werden Verknüpfungslinien genannt und werden nur bei einer Abfrage angezeigt, für die mehrere Tabellen benutzt werden. Sie können diese Verknüpfungslinien auch selbst erzeugen, indem Sie ein Schlüsselfeld von einer Tabelle in eine andere ziehen.
Die untere Hälfte des Entwurfsfensters enthält ein Gitternetz für eine Beispielabfrage (»Query-by-Example« oder QBE), in der Sie Kriterien für die Abfrage festlegen können. QBE ermöglicht es Ihnen, Abfragekriterien einzurichten, indem Sie praktische Beispiele der benötigten Art von Daten eingeben. Wenn Sie zum Beispiel in einer Kundenabfrage alle Kunden im Bundesland Nordrhein-Westfalen finden wollen, dann geben Sie das Beispielelement »NRW« ein.
Nachdem Sie das Hinzufügen von Tabellen beendet haben, wählen Sie Schließen. Wenn Sie den Dialog Tabelle anzeigen erneut öffnen wollen, dann klicken Sie auf die Schaltfläche Tabelle anzeigen in der Symbolleiste, oder wählen Sie den Menüpunkt Abfrage/Tabelle anzeigen.
Das Abfrage-Fenster läßt es zu, die Abfrage in verschiedenen Ansichten zu betrachten. Sie schalten diese Ansichten über das Menü Ansicht oder über die Symbolleiste um:
In der Symbolleiste des Abfragefensters finden Sie zahlreiche Schaltflächen, die Ihnen die Arbeit erleichtern. In Tabelle 26.1 werden diese Schaltflächen beschrieben.
Tabelle 26.1: Die Schaltflächen des Abfrageentwurfs
Nachdem Sie eine neue Abfrage gestartet haben oder auf die Schaltfläche Entwurf für im Datenbankfenster für eine bestehende Abfrage geklickt haben, öffnet Windows das Abfrage-Fenster in der Entwurfsansicht. Die Entwurfsansicht für Abfragen ist in zwei Hauptbereiche unterteilt (siehe Bild 26.4). Im oberen Bereich ist eine Feldliste für jede Tabelle enthalten, die in dem Abfrageentwurf benutzt wird. Im unteren Bereich ist der QBE-Entwurfsbereich zu sehen, in dem Sie die Abfrage entwerfen können. Jede Spalte des QBE-Gitters ist einem Feld zugeordnet. Für jedes Feld können Sie Abfrage-Parameter, wie Kriterien oder Sortierung, in den Zeilen des QBE-Gitters festlegen.
Abbildung 26.4: Entwerfen Sie die Abfrage im QBE-Entwurfsbereich, in dem Sie Felder hinzufügen oder die Abfrage-Parameter einstellen.
Der QBE-Entwurfsbereich besteht aus Spalten und Zeilen. Jede Spalte repräsentiert ein Feld, das in der Abfrage benutzt wird. Wenn Sie ein Feld in das QBE-Gitter hinzufügen wollen, dann klicken Sie doppelt auf das Feld in der Feldliste, oder ziehen Sie den Feldnamen in eine Spalte. Access füllt den Feldnamen ein und setzt das Kontrollfeld in der Zeile Anzeigen.
Um alle Felder in einer Feldliste zu markieren, klicken Sie doppelt auf den Tabellennamen und ziehen den markierten Bereich in das QBE-Gitter. Wenn Sie ein Feld entfernen wollen, dann aktivieren Sie den Feldmarkierer und drücken (Entf), oder positionieren Sie die Eingabemarke in der Spalte, und wählen Sie Bearbeiten/Spalte löschen.
Das QBE-Gitter enthält eine zusätzliche Zeile, die in der Standardeinstellung verborgen ist: Funktion. Um sich diese Zeile anzusehen, wählen Sie den Menüpunkt Ansicht/Funktionen. Wenn diese aktiviert wurde, dann wird die Zeile Funktion unterhalb der Zeile Tabelle im QBE-Gitter angezeigt.
Meine Abfrage umfaßt viel mehr Datensätze, als ich erwartet habe, und es dauert ziemlich lange, bis sie erstellt ist. Sie haben sehr wahrscheinlich keine Beziehung zwischen den Tabellen eingefügt. Kehren Sie zur Entwurfsansicht zurück, und löschen Sie dort entweder die überflüssigen Tabellen, oder richten Sie eine Tabellenbeziehung ein, indem Sie ein Feld von einer Tabelle zu einem anderen bezogenen Feld in einer anderen Tabelle ziehen.
Sie können auch Berechnungsfelder in ein QBE-Gitter einfügen. Berechnungsfelder sind temporäre Felder, die in einem Dynaset erstellt werden, wenn eine Abfrage aktiviert wird. In diesen Feldern werden die Ergebnisse der Berechnungen, die mit den Tabelleninhalten durchgeführt wurden, gespeichert. Dies kann zum Beispiel ein Kalkulationsaufschlag auf ein Produkt sein oder die Zusammenführung von Textfeldern.
Wenn Sie ein neues Berechnungsfeld erstellen wollen, dann markieren Sie eine Zelle ohne Feldnamen im QBE-Entwurfsbereich. Sie können den Ausdruck (die Berechnung) direkt in die Zelle eingeben. Access vergibt dann einen Namen für dieses neue Feld, wie zum Beispiel »Ausdr1«, den Sie in einen aussagekräftigeren Namen verändern können. Alternativ dazu können Sie auch einen Dynaset-Feldnamen vergeben, der mit einem Doppelpunkt (:) abschließt, und dann die Berechnung oder Zusammenfügung eingeben. Feldnamen, die bei Berechnungen benutzt werden, müssen in Klammern stehen ([]), Leerzeichen müssen von Anführungszeichen eingefaßt sein. Nur numerische und arithmetische Operatoren brauchen nicht von Sonderzeichen eingefaßt werden. Der Name des neuen Berechnungsfeldes muß nicht in Klammern eingegeben werden. Sie können z. B. ein neues Feld mit dem Namen »Gesamt« erzeugen, indem Sie folgendes eingeben:
Gesamt: [Stückpreis]*
Sie können auch auf die Schaltfläche Aufbauen in der Symbolleiste klicken, um den Ausdruck-Editor aufzurufen, der Ihnen bei der Erstellung eines Ausdrucks behilflich ist. Im folgenden erhalten Sie einige Beispielberechnungen:
In Bild 26.5 sehen Sie eine Verkettung von Textfeldern, nämlich den Vornamen und den Nachnamen des Mitglieds und eine Berechnung, die geplante Verkäufe basierend auf dem Preis inklusive 10% Zuschlag erstellt.
Abbildung 26.5: Berechnungsfelder erlauben es Ihnen, Berechnungen in Abfragen und das Verketten von Textfeldern durchzuführen.
Um ein Berechnungsfeld zu erstellen, befolgen Sie diese Schritte:
Manchmal müssen Berechnungen mit Datensatzgruppen durchgeführt werden, anstatt mit einzelnen Datensätzen (siehe Bild 26.6). Sie können sich zum Beispiel den Gesamtumsatz in einem Bundesland anschauen oder sich die Werbekosten für ein einzelnes Produkt berechnen lassen. Access ermöglicht es Ihnen, anspruchsvolle Berechnungen mit Gruppen von Datensätzen vorzunehmen. Sie können zum Beispiel den durchschnittlichen Umsatz einer Abteilung oder die maximale Anzahl an Arbeitsstunden je Arbeitsbereich berechnen lassen.
Abbildung 26.6: Benutzen Sie die Zeile Funktion, um die Abfrageergebnisse nach Datensätzen zu gruppieren und Gruppenberechnungen durchführen zu lassen.
Sie legen Gruppen mit der Zeile Funktion fest. Um diese Zeile anzeigen zu lassen, wählen Sie den Menüpunkt Ansicht/Funktionen. Nachdem die Funktionszeile im QBE-Gitter angezeigt ist, setzt Access automatisch die Bezeichnung Gruppierung für jedes Feld ein. Benutzen Sie die Gruppierung, um die Felder (Gruppen), die Sie bei der Berechnung einsetzen wollen, auszuwählen.
Sie können die Feldbezeichnung Gruppierung jederzeit in eine der folgenden Berechnungsarten verändern:
Um Gruppenberechnungen durchzuführen, folgen Sie diesen Schritten:
Die Zeile Kriterien (siehe Bild 26.7) im QBE-Entwurfsbereich ermöglicht es Ihnen, in Ihre Abfrage nur Datensätze einzubinden, die bestimmten Kriterien entsprechen. Kriterien sind die Bedingungen, die zur Auswahl von Datensätzen angewandt werden. Diese Option wird sicherlich häufiger eingesetzt als alle anderen.
Abbildung 26.7: Beschränken Sie die Anzahl der Datensätze, die als Abfrageergebnis zurückgeliefert werden, indem Sie einige Bedingungen in der Zeile Kriterien eintragen.
Sie können Datensätze auswählen, indem Sie eine der folgenden Bedingungen einsetzen:
Tabelle 26.2: Platzhalterzeichen
Operator |
Beschreibung |
* |
Anstelle einer beliebigen Anzahl von Zeichens einsetzbar. |
? |
Anstelle eines einzelnen, beliebigen Zeichens einsetzbar. |
# |
Anstelle einer einzelnen, beliebigen Zahl. |
Einsetzbar, um ein Zeichen aus der in Klammern angegebenen Auswahl einsetzen zu lassen. »H[au]hn« findet »Hahn« und »Huhn«, aber nicht »Hohn«. | |
! |
Einsetzbar, um in Klammern Zeichen anzugeben, die nicht gefunden werden sollen. »H[!au]hn« findet »Hohn«, aber nicht »Hahn« oder »Huhn«. |
- |
Einsetzbar für ein Zeichen aus einem bestimmten Zeichenbereich. »H[o-u]hn« findet »Hohn«, »Hphn«, »Hqhn« usw. bis »Huhn«. |
Wie |
Einsetzbar für die Suche nach beliebigen Zeichenmustern. Benutzen Sie zum Beispiel »Wie"[A-D]*"«, um eine Liste der Mitglieder zu sehen, deren Namen mit A, B, C oder D beginnen. Access ergänzt häufig automatisch »Wie« im QBE-Gitter, ohne daß Sie es tippen müssen. |
Tabelle 26.3: Vergleichsoperatoren
Operator |
Beschreibung |
> |
Größer als |
< |
Kleiner als |
<= |
Kleiner oder gleich |
=> |
Größer als oder gleich |
<> |
Ungleich |
= |
Gleich |
Tabelle 26.4: Logische Operatoren
Operator |
Beschreibung |
Und |
Es ist erforderlich, daß alle Kriterien erfüllt werden. |
Oder |
Es ist der erforderlich, daß eines der Kriterien erfüllt wird. |
Nicht |
Es ist erforderlich, daß das Kriterium nicht erfüllt wird. |
Zwischen X und Y |
Es ist erforderlich, daß der Wert im angegebenen Bereich liegt. |
IN |
Es ist erforderlich, daß der Wert einem in einer Liste angegebenen Wert entspricht. |
In der Standardeinstellung erscheinen die Ergebnisse einer Abfrage unsortiert, also in der Reihenfolge, in der die Abfrageantworten gefunden wurden. Sie können eine Sortierordnung festlegen, in der Ergebnisse angezeigt werden sollen, damit Sie verständlicher oder übersichtlicher sind.
In der Zeile Sortierung im QBE-Gitter befindet sich eine Dropdown-Liste, die die folgenden Optionen enthält:
Als Standardeinstellung ist (nicht sortiert) ausgewählt. Um eine Sortierreihenfolge festzulegen, markieren Sie die Felder, und wählen Sie dann die Reihenfolge aus der Dropdown-Liste.
Sie können sich die Eigenschaften einer Abfrage, einer Tabellen-Feldliste, die bei der Abfrage benutzt wird, oder eines individuellen Feldes anschauen und verändern. Um sich die Eigenschaft eines dieser Objekte anzusehen und zu verändern, wählen Sie Ansicht/Eigenschaften, um den Eigenschaften-Dialog zu öffnen. Klicken Sie dann auf das Objekt, dessen Eigenschaften Sie verändern wollen. Der Inhalt des Eigenschaften-Dialogs verändert sich und zeigt jeweils die neu gewählten Eigenschaften des ausgewählten Objekts an.
Sie wollen vielleicht das Format eines Berechnungsfeldes so verändern, daß eine bestimmte Anzahl von Dezimalstellen bei einer Zahl angezeigt wird.
Eine wichtige Abfrage-Eigenschaft ist die Eigenschaft Keine Duplikate (siehe Bild 26.8). In der Standardeinstellung ist diese Eigenschaft auf Nein gesetzt. Dies bedeutet, daß Duplikate der Datensätze, wenn Sie existieren und Ihren Kriterien entsprechen, im Dynaset aufgelistet werden. Um Duplikat-Werte auszuschließen, setzen Sie die Eigenschaft Keine Duplikate auf Ja.
Wenn es das Ziel Ihrer Abfrage sein soll, Filmkategorien und die Ausleihrate pro Kategorie festzustellen, dann würde Ihre Abfrage mit Standardeinstellung die Duplikate beider Kategorien auflisten. Um die Kategorien nur einmal aufzulisten, setzen Sie die Eigenschaft Keine Duplikate auf Ja.
Abbildung 26.8: Setzen Sie die Abfrage-Eigenschaft Keine Duplikate auf Ja, um Duplikatwerte aus dem Dynaset auszuschließen.
([Feld1]&« und »&[Feld2])
Die Abfrage braucht bei der Ausführung zuviel Zeit. Innerhalb von Access können Sie die Effizienz der Abfrage durch Rushmore-Optimierung erhöhen. In erster Linie verlangt diese Technologie, daß Sie einen Index für die Felder erzeugen, die Sie in Ihrer Abfrage benutzen. Wenn Sie mehr Informationen über die Rushmore-Optimierung erhalten wollen, dann suchen Sie unter dem Hilfethema »Optimieren der Abfrageleistung«.
Ich führe oft Abfragen durch, die sich auf unsichere Kriterien (wie z. B. nur teilweise bekannte Namen) stützen. Welche Operatoren sind dabei am vorteilhaftesten? Wenn Sie mit ungenauen Daten arbeiten, dann ist der beste Operator, den Sie einsetzen können, »Wie«, der nach allen Werten sucht, die dem angegebenen Wert ähnlich sind. Sie können natürlich auch den Platzhalter-Operator »*« an Stellen einsetzen, an denen es Abweichungen geben wird (zum Beispiel »Wie »H*hn"«).
Wenn Sie eine Anzahl von Datensätzen auf einmal aktualisieren wollen, dann wählen Sie am besten eine Aktionsabfrage. Für eine Aktionsabfrage müssen Sie zunächst eine Auswahlabfrage erstellen und dann den Abfragetyp in eine Aktionsabfrage verändern. In Tabelle 26.5 sehen Sie die verschiedenen möglichen Aktionsabfragen. Wenn Sie eine Aktionsabfragen erstellen wollen, dann befolgen Sie diese Schritte:
Abbildung 26.9: Beachten Sie, daß der Dialog Sie darauf aufmerksam macht, daß Sie keine der angegebenen Änderungen rückgängig machen können, und Sie fragt, ob Sie sicher sind, daß Sie fortfahren möchten.
In Tabellle 26.5 sehen Sie die verschiedenen Arten von Aktionsabfragen, die zur Verfügung stehen. Klicken Sie auf die Schaltfläche Abfragetyp in der Symbolleiste, und wählen Sie eines der Symbole, die in der ersten Spalte angezeigt werden, aus. Wenn Sie diese Abfragen speichern wollen, dann wird dem Abfragenamen im Datenbankfenster dasselbe Symbol vorangestellt. Ein Ausrufezeichen hinter dem Symbol soll Sie davor warnen, daß Access größere Datenveränderungen vornehmen wird, wenn Sie diese Abfrage ausführen. Bedenken Sie, daß Sie die Abfrage bereits erneut ausführen, wenn Sie sie aus dem Datenbankfenster erneut öffnen (mit der Schaltfläche Öffnen oder durch Doppelklick).
Tabelle 26.5: Abfragetypen
Ich habe eine Auswahlabfrage erstellt, und nun stelle ich fest, daß ich eine Anfügeabfrage hätten erstellen müssen. Anstatt die Abfrage neu zu erstellen, können Sie den Abfragetyp, in der Entwurfsansicht verändern und die weiter benötigten Informationen eingeben. Öffnen Sie die Abfrage in der Entwurfsansicht, klicken Sie auf die Schaltfläche Abfragetyp, und wählen Sie dort Anfügeabfrage. Access fordert Sie auf, den Namen der Tabelle einzugeben, an die Sie Daten anfügen wollen, und (falls erforderlich) den Datenbanknamen.
(c) 1997 Que