Beziehungen sind das A und O in einer relationalen Datenbank. Sie beschreiben, wie die Daten zweier Tabellen miteinander verbunden sind und ermöglichen es, die Daten der einen Tabelle zu denen einer zweiten Tabelle zuzuordnen. Der einfachste Weg, eine solche Beziehung zu erstellen, ist der Nachschlage-Assistent. Er wird als einer der Felddatentypen angeboten, aber in Wirklichkeit erledigt er viel mehr, als ein Feld anzulegen – zusätzlich erzeugt er nämlich noch eine Beziehung, stellt ihre Eigenschaften ein und legt für das erzeugte Feld sogar auch noch Eigenschaften an, durch die man es bequem als Nachschlagefeld nutzen kann.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 2203_Nachschlageassistent.accdb.
Vorbereitung
Auch wenn der Nachschlage-Assistent eine ganze Menge Aufgaben übernimmt, so sind dennoch einige Vorbereitungen zu treffen, bevor Du ihn nutzen kannst. So benötigen wir zumindest zwei Tabellen – eine, aus welcher die Daten für das Nachschlage-feld stammen sollen und eine, die das Feld mit dem Nachschlagefeld enthalten soll.
Für Fortgeschrittene formuliert heißt das, wie benötigen eine Tabelle, die das an der zu erstellenden Beziehung beteiligte Primärschüsselfeld enthält und eine Tabelle, die das Fremdschlüsselfeld der Beziehung aufnehmen soll.
Für solche Kombinationen aus zwei Tabellen gibt es einige Beispiele:
- Kundentabelle, die ein Nachschlagefeld erhalten soll, mit der die Anrede aus einer Tabelle mit Anreden ausgewählt werden sollen
- Produkttabelle, die ein Nachschlagefeld erhalten soll, mit der die Kategorie des Produkts aus einer Tabelle mit Kategorien ausgewählt werden soll
- Projekttabelle, die ein Nachschlagefeld zur Auswahl von Datensätzen aus einer Kundentabelle erhalten soll
Tabellen erstellen
Um den Nachschlage-Assistenten auszuprobieren, nachfolgend am Beispiel von Kunden und Anreden, benötigen wir also zuerst zwei Tabellen. Die erste soll tblAnreden heißen und enthält das Primärschlüsselfeld AnredeID sowie das Feld Anrede (siehe Bild 1). Diese Tabelle soll die auszuwählenden Datensätze liefern. Diese Tabelle befüllen wir nach dem Anlegen und Speichern schon einmal mit zwei Beispieldatensätzen für die Anreden Herr und Frau (siehe Bild 2).
Bild 1: Die Tabelle tblAnreden mit Beispieldaten
Bild 2: Entwurf der Tabelle tblAnreden
Die zweite Tabelle heißt tblKunden und enthält der Einfachheit halber nur wenige Felder, nämlich das Primärschlüsselfeld KundeID und die beiden Felder Vorname und Nachname. Weitere Felder könnte man bei Bedarf hinzufügen, aber für die Demonstration des Nachschlage-Assistenten sind diese nicht notwendig.
Diese Tabelle sieht in der Entwurfsansicht wie in Bild 3 aus.
Bild 3: Die Tabelle tblKunden in der Entwurfsansicht
Starten des Nachschlage-Assistenten
Um den Nachschlage-Assistenten zu starten, gibt es verschiedene Möglichkeiten. Die erste ist die Auswahl des Eintrags Nachschlage-Assistent… für ein neues Feld namens AnredeID in der Tabelle tblKunden in der Entwurfsansicht. Diesen Eintrag finden Sie wie in Bild 4.
Bild 4: Starten des Nachschlage-Assistenten
Alternativ können Sie, wenn Sie die Tabelle in der Entwurfsansicht anzeigen, auch auf den Ribbonbefehl Tabellenentwurf|Tools|Suchen ändern klicken.
Sie können den Nachschlage-Assistent auch starten, wenn Sie die Tabelle in der Datenblattansicht entwerfen. Dann selektieren Sie nach einem Klick auf die Spalte Zum Hinzufügen klicken den Eintrag Nachschlagen und Beziehung (siehe Bild 5).
Bild 5: Starten des Nachschlage-Assistenten über die Datenblattansicht
Erster Schritt im Nachschlage-Assistent: Art der Quelle wählen
Daraufhin erscheint der Dialog Nachschlage-Assistent (siehe Bild 6). Im ersten Schritt fragt dieser, ob das Nachschlagefeld seine Daten aus einer Tabelle oder Abfrage beziehen soll oder aus einer Liste mit selbst eingegebenen Werten. Wir wollen eine Tabelle als Datenquelle nutzen, nämlich die Tabelle tblAnreden. Also behalten wir den voreingestellten Wert bei und klicken auf Weiter.
Bild 6: Erster Schritt im Nachschlage-Assistent
Datenquelle auswählen
Im folgenden Schritt wählen wir die Tabelle oder Abfrage aus, die als Datenquelle für das Nachschlagefeld dienen soll. Dabei kannst Du nach Tabellen, Abfragen oder beiden filtern. In der Regel verwendet man nur Tabellen als Datenquelle für ein Nachschlagefeld.
In diesem Fall soll das Nachschlagefeld die Daten der Tabelle tblAnreden zur Auswahl anbieten. Also behalten wir die aktuelle Auswahl aus Bild 7 bei und klicken wieder auf Weiter.
Bild 7: Auswahl einer Tabelle als Datensatzherkunft
Felder für das Nachschlagefeld auswählen
Der nächste Schritt zeigt zwei Listenfelder an. Das linke davon enthält alle Felder der im vorherigen Schritt ausgewählten Tabelle, das rechte ist zunächst leer (siehe Bild 8).
Bild 8: Hinzufügen der Felder für das Nachschlagefeld
Um hier die richtige Auswahl zu treffen, müssen wir wissen, was ein Nachschlagefeld in einer Tabelle anzeigen soll und welchen Wert das als Nachschlagefeld ausgelegte Tabellenfeld eigentlich enthält.
Was wir in der aufgeklappten Liste eines Nachschlagefeldes sehen, sind die Werte eines der Felder der Tabelle, das als Datenquelle für das Nachschlagefeld dient. In unserem Fall soll es das Feld Anrede sein, denn dieses enthält die anzuzeigenden Werte wie Herr oder Frau.
Eigentlich speichert das Nachschlagefeld allerdings nicht die Anrede selbst, sondern den Wert des Primärschlüsselfeldes der Anrede des selektierten Datensatzes.
Für ein auf diese Weise funktionierendes Nachschlagefeld benötigen wir also zwei Felder aus der zugrunde liegenden Tabelle: das Primärschlüsselfeld sowie das Feld mit dem in der Auswahl anzuzeigenden Wert.
In diesem Fall ist es einfach: Die Tabelle tblAnreden enthält nur diese beiden Felder, also fügen wir die beiden mit einem Klick auf >> zur rechten Liste hinzu und klicken auf Weiter.
Sortierungen festlegen
Der folgende Schritt erlaubt das Einstellen von Sortierungen für die im Nachschlagefeld anzuzeigenden Daten (siehe Bild 9).
Bild 9: Festlegen von Sortierungen für die Werte im Nachschlagefeld
Hier kannst Du bis zu vier Sortierungen angeben, wobei alle Felder ausgewählt werden können, die zuvor als Felder für das Nachschlagefeld ausgewählt wurden. In der Regel reicht es aus, eine Sortierung für das anzuzeigende Feld anzulegen. Dazu wählst Du einfach das Feld aus und behältst die aufsteigende Reihenfolge bei. Ein Klick auf Weiter beendet diesen Schritt.
Ausblenden der Schlüsselspalte
Weiter oben haben wir beschrieben, dass wir zwei Felder für das Nachschlagefeld auswählen, aber nur eines davon angezeigt werden soll. Wie aber legen wir fest, welche der beiden angezeigt werden soll und welche nicht Wenn Du die Tabelle, die als Nachschlagefeld dienen soll, ordnungsgemäß mit einem Primärschlüsselfeld wie hier AnredeID versehen hat, übernimmt der Assistent den größten Teil der Arbeit für Dich. Er erkennt nämlich das Primärschlüsselfeld in der Nachschlagetabelle und bietet im folgenden Schritt an, dieses als Schlüsselspalte auszublenden (siehe Bild 10).
Bild 10: Ausblenden der Schlüsselspalte
Das Datenblatt in diesem Schritt zeigt eine Vorschau der Daten des Nachschlagefeldes an. Da die Option Schlüsselspalte ausblenden aktiviert ist, erscheint hier nur die Spalte Anrede.
Deaktiviert man diese Option, erscheint auch die Spalte AnredeID. Wir aber wollen, dass das Nachschlagefeld die Schlüsselspalte nicht anzeigt, also aktivieren wir die entsprechende Option wieder und beenden den Schritt mit der Schaltfläche Weiter.
Beschriftung des Nachschlagefeldes
Die oberste Option im folgenden Schritt schlägt einen Namen für das Nachschlagefeld vor. Wenn Du bereits vor dem Start des Nachschlage-Assistenten einen Namen für das Feld eingestellt hast, beispielsweise AnredeID, dann übernimmt der Assistent diesen Namen. Falls nicht, käme in unserem Fall der Name des anzuzeigenden Feldes der Nachschlagetabelle zum Einsatz, also Anrede. Ist das der Fall, solltest Du den in Bild 11 vorgeschlagenen Feldnamen in AnredeID ändern.
Bild 11: Festlegen der Beschriftung und weiterer Einstellungen
Einstellungen zur Datenintegrität
Eine wichtige Hintergrundinformation ist, dass der Nachschlage-Assistent bei Verwendung von Daten aus einer Tabelle eine Beziehung zwischen den beiden Tabellen anlegt. Für diese Beziehung kannst Du direkt im Assistenten einige Eigenschaften einstellen. Diese findest ebenfalls im soeben vorgestellten Schritt unter dem Feld für die Beschriftung.
Die erste Option heißt Datenintegrität aktivieren. Damit kannst Du einstellen, ob die sogenannte referenzielle Integrität für die Beziehung aktiviert werden soll (dies ist auch der Begriff, der in den Eigenschaften einer Beziehung, die Du an anderer Stelle einsehen kannst, verwendet wird).
Wenn referenzielle Integrität (beziehungsweise Datenintegrität) aktiviert ist, hat das Folgen für die Daten, die Du in das Nachschlagefeld eingeben kannst. Dieses kann dann nur noch leer sein oder es muss einen der Primärschlüsselwerte aus der Tabelle enthalten, aus der das Nachschlagefeld seine Daten bezieht. Wir haben ja oben erwähnt, dass eigentlich die Primärschlüsselwerte und nicht die angezeigten Werte im Nachschlagefeld gespeichert werden.
Das ist auch sinnvoll, denn wir wollen nicht, dass irgendwelche Werte in dem Nachschlagefeld landen, die in der Nachschlagetabelle gar nicht zu finden sind.
Löschweitergabe aktivieren oder Löschbeschränkung
Wenn Datenintegrität aktiviert ist, kannst Du noch eine weitere Einstellung vornehmen. Mit dieser wählst Du eine der folgenden Optionen aus:
- Löschweitergabe: Wenn diese Option aktiviert ist, sorgt das Löschen eines der Datensätze in der Nachschlagetabelle dafür, dass auch alle Datensätze in der Tabelle mit dem Nachschlagefeld gelöscht werden, die mit diesem Datensatz verknüpft sind.
- Löschbeschränkung: Ist diese Option aktiviert, kannst Du keinen Datensatz aus der Nachschlagetabelle löschen, sobald einer der Datensätze in der Tabelle mit dem Nachschlagefeld über dieses mit diesem verknüpft ist.
In unserem Beispiel mit den Kunden und Anreden würde die Aktivierung der Löschweitergabe Folgendes bedeuten: Wenn der Benutzer eine Anrede löscht, werden auch alle Kunden gelöscht, für die diese Anrede ausgewählt wurde. Das ist nicht sinnvoll. Besser ist es in diesem Fall, die Löschbeschränkung zu aktivieren. Dann kann eine Anrede nicht mehr gelöscht werden, sobald einer der Kunden diese Anrede aufweist.
Ein Beispiel, wo man die Löschweitergabe sinnvoll einsetzen kann, sind Kunden und Bestellungen, wobei für die Bestellungen über ein Nachschlagefeld jeweils ein Kunde ausgewählt wird. Löscht man einen Kunden, sollen auch dessen Bestellungen gelöscht werden.
Mehrere Werte zulassen
Die Option Mehrere Werte zulassen kann nur aktiviert werden, wenn die Datenintegrität nicht aktiviert ist. Weiter oben haben wir bereits erwähnt, dass die Datenintegrität aber eigentlich immer aktiviert sein sollte. Welchen Sinn macht dann eine Option zum zulassen mehrerer Werte
Sie dient dazu, dass Sie für ein Feld mehrere Werte der Nachschlagetabelle auswählen können. Das Nachschlagefeld wird dadurch als mehrwertiges Feld ausgelegt – siehe auch Tabellen [basics]: Mehrwertige Felder (www.access-basics.de/566). Eigentlich ist das eine Vereinfachung, um keine m:n-Beziehung erstellen zu müssen. Dort sorgst Du mit einer Verknüpfungstabelle dafür, dass jeder Datensatz der einen mit jedem Datensatz der anderen Tabelle verknüpft werden kann. Das Zulassen mehrerer Werte für ein Feld ist allerdings kein adäquater Ersatz für eine saubere Entwicklung des Datenmodells. Außerdem verlierst Du damit die Möglichkeit, die Datenintegrität zu nutzen.
Abschluss des Assistenten
Wenn wir uns im letzten Schritt für die Aktivierung der Datenintegrität entscheiden, was wir dringend empfehlen, erhalten wir als Ergebnis einige Änderungen an dem bearbeiteten Feld als auch im Datenmodell.
In der aktuellen Ansicht des Tabellenentwurfs finden wir zunächst keine Unterschiede. Auch in der Spalte Felddatentyp findest Du nicht etwa einen Eintrag wie Nachschlagefeld, sondern dort bleibt der Datentyp Zahl erhalten – das liegt daran, dass ja eigentlich der Primärschlüsselwert aus der Nachschlagetabelle gespeichert wird. Wenn Du dort allerdings das Feld AnredeID markierst und unten im Bereich Feldeigenschaften zur Seite Nachschlagen wechselst, findest Du einige Änderungen (siehe Bild 12).
Bild 12: Die Änderungen durch den Nachschlage-Assistenten
Vorher war hier nur die Eigenschaft Steuerelement anzeigen zu sehen, die den Wert Textfeld enthielt. Der Assitent hat dieses in Kombinationsfeld geändert. Daher bietet das Feld seine Werte nun auch als Nachschlagefeld an.
Die Eigenschaft Datensatzherkunft enthält die SQL-Abfrage, die gemäß den Angaben im Assistenten zusammengestellt wurde. Du siehst hier, dass die beiden Felder AnredeID und Anrede der Tabelle tblAnreden angegeben wurden sowie eine aufsteigende Sortierung nach dem Feld Anrede.
Das Feld Gebundene Spalte gibt an, dass der Wert des ersten Feldes dieser Abfrage, AnredeID, im Nachschlagefeld gespeichert werden soll. Mit dem Wert 2 für das Feld Spaltenanzahl und dem Wert 0cm;2,54cm für das Feld Spaltenbreiten sorgen wir dafür, das das Nachschlagefeld aufgeklappt zwar eigentlich zwei Felder enthält, das erste wird durch die Breite von 0cm jedoch praktisch ausgeblendet.
Nachschlagefeld ausprobieren
Nun wechseln wir in die Datenblattansicht und sehen nach einem Klick auf die Schaltfläche mit dem Pfeil nach unten die Einträge der Tabelle tblAnreden, sofern diese bereits gefüllt ist (siehe Bild 13). Das ist für uns eigentlich das wichtigste Ergebnis des Nachschlage-Assistenten.
Bild 13: Nachschlagefeld in Aktion
Nachdem Du eine Anrede ausgewählt hast, wird diese schließlich als Wert im Feld AnredeID angezeigt (siehe Bild 14).
Bild 14: Ein Kunde mit ausgewählter Anrede
Allerdings wissen wir auch, dass ja nicht die Anrede selbst im Feld AnredeID gespeichert wird. Wie aber können wir uns davon überzeugen Das gelingt auf verschiedene Arten. Die einfachste ist, einfach die Darstellung so zu ändern, dass wieder der eigentliche Wert angezeigt wird. Dazu wechseln wir wieder in die Entwurfsansicht der Abfrage und stellen die Eigenschaft Steuerelement anzeigen auf den Wert Textfeld ein (siehe Bild 15).
Bild 15: Zurückverwandeln des Nachschlagefeldes in ein Textfeld
Wechseln wir dann zurück in die Datenblattansicht, sehen wir im Feld AnredeID den Wert 1 (siehe Bild 16). Das ist genau der Wert, der bei der Anzeige des Nachschlagefeldes dazu führt, dass dieses den Datensatz aus der Tabelle tblAnreden ermittelt, dessen Primärschlüsselfeld den Wert 1 enthält und den Wert des Feldes Anrede dieses Datensatzes anzeigt.
Bild 16: Kunde mit dem eigentlichen Wert im Feld AnredeID
Durch den Nachschlage-Assistenten erstellte Beziehung
Schließlich schauen wir uns noch die Beziehung an, die der Nachschlage-Assistent zwischen den beiden Tabellen erzeugt hat. Diese finden wir im Beziehungen-Fenster, das wir über den Ribbon-Eintrag Datenbanktools|Beziehungen öffnen. Hier findest Du dann die Beziehung wie in Bild 17 vor. Gegebenenfalls musst Du die beiden Tabellen noch zum Beziehungen-Fenster hinzufügen. Mehr zu diesem Thema liest Du unter Tabellen [basics]: Das Beziehungen-Fenster (www.access-basics.de/573).
Bild 17: Die vom Nachschlage-Assistent erstellte Beziehung im Beziehungen-Fenster
Zusammenfassung und Ausblick
Manchmal gibt es noch die Notwendigkeit von Anpassungen an den mit dem Nachschlagefeld-Assistenten erstellten Nachschlagefeldern. Diese schauen wir uns im Artikel Tabellen [basics]: 1:n-Beziehungen (www.access-basics.de/571) an.
Downloads zu diesem Beitrag
Enthaltene Beispieldateien:
2203_Nachschlageassistent.accdb