window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Tabellen [basics]: Manuelle Nachschlagefelder

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Nachschlagefelder sind ein praktisches Hilfsmittel, wenn es um die Auswahl von Daten aus verknüpften Tabellen geht. Normalerweise erstellt man diese schnell und effizient mit dem Nachschlage-Assistent, den Access in der Liste der Felddatentypen anzeigt. In manchen Fällen jedoch gibt es Anforderungen, die der Nachschlage-Assistent nicht erfüllen kann. Dann ist es praktisch, wenn man weiß, wo und wie der Nachschlage-Assistent Änderungen vorgenommen hat und diese manuell an die gewünschten Anforderungen anpassen kann.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank 2203_ManuelleNachschlagefelder.accdb.

Beziehung als Voraussetzung

Wenn Du ein Nachschlagefeld mit dem Nachschlage-Assistent erstellst, hat dieser Änderungen an verschiedenen Stellen vorgenommen. Er hat eine Beziehung angelegt, ihre Eigenschaften nach den Vorgaben des Benutzers eingestellt und er hat dafür gesorgt, dass statt eines normalen Textfeldes ein Nachschlagefeld die Auswahl der verknüpften Tabellen erleichtert.

Mehr über die Nutzung des Nachschlage-Assistenten liest Du unter Tabellen [basics]: Der Nachschlage-Assistent (www.access-basics.de/572).

Eine Beziehung ist allerdings nicht zwingend Voraussetzung für das Auslegen eines Tabellenfeldes als Nachschlagefeld. Du kannst ein Nachschlagefeld auch ohne Vorhandensein einer Beziehung hinzufügen. Wenn Du jedoch eine Beziehung anlegen möchtest, wird dies in der Regel eine 1:n-Beziehung sein. Mehr dazu liest Du unter Tabellen [basics]: 1:n-Beziehungen (www.access-basics.de/571).

Beispiel: Projekte und Kunden

Wir schauen uns die Erstellung eines Nachschlagefeldes anhand der beiden Tabellen tblKunden und tblProjekte an. Die Tabelle tblKunden hat nur die zu Beispielzwecken notwendigsten Felder und sieht wie in Bild 1 aus.

Entwurf der Tabelle tblKunden

Bild 1: Entwurf der Tabelle tblKunden

Die zweite Tabelle heißt tblProjekte und hat den Entwurf aus Bild 2. Hier haben wir bereits das Fremdschlüsselfeld KundeID angelegt, das wir gleich als Nachschlagefeld einrichten wollen.

Entwurf der Tabelle tblProjekte

Bild 2: Entwurf der Tabelle tblProjekte

Auch wenn eine Beziehung nicht nötig ist, haben eine solche bereits zur Datenbank hinzugefügt. Diese sieht im Beziehungen-Fenster wie in Bild 3 aus und ist mit referenzieller Integrität definiert.

Die Beziehung zwischen den Beispieltabellen

Bild 3: Die Beziehung zwischen den Beispieltabellen

Wenn wir in diesem Zustand Daten in die Tabelle tblProjekte eingeben wollen, müssen wir noch die Primärschlüsselwerte der Datensätze der Tabelle tblKunden ermitteln und von Hand in das Fremdschlüsselfeld KundeID eintragen (siehe Bild 4).

Das Feld KundeID ohne Nachschlagefeld

Bild 4: Das Feld KundeID ohne Nachschlagefeld

Die Nachschlagen-Eigenschaften

Dass das Feld KundeID ein einfaches Textfeld ist und nicht beispielsweise ein Kombinationsfeld zur Auswahl der Daten aus der Tabelle tblKunden, liegt an den Eigenschaften dieses Feldes, die Du im Tabellenentwurf nach dem Markieren des Feldes KundeID in den Eigenschaften unter Nachschlagen findest.

Hier ist aktuell nur die Eigenschaft Steuerelement anzeigen verfügbar, die den Wert Textfeld enthält (siehe Bild 5). Es gibt jedoch, wie ein Klick auf das Auswahlfeld für diese Eigenschaft zeigt, noch weitere Optionen.

Diese Standardeinstellung sorgt für die Anzeige eines Textfeldes zur Dateneingabe.

Bild 5: Diese Standardeinstellung sorgt für die Anzeige eines Textfeldes zur Dateneingabe.

Wechseln zum Kombinationsfeld

Die für uns interessante Einstellung lautet Kombinationsfeld. Sobald Du diese Option auswählst, erscheinen noch einige weitere Eigenschaften, die Du in Bild 6 siehst. Diese Eigenschaften schauen wir uns in den nächsten Abschnitten an.

Eigenschaften eines frisch angelegten Nachschlagfeldes

Bild 6: Eigenschaften eines frisch angelegten Nachschlagfeldes

Hier in der Übersicht:

  • Steuerelement anzeigen: Ermöglicht die Anzeige verschiedener Steuerelemente, normalerweise Textfeld, Listenfeld und Kombinationsfeld. Bei Ja/Nein-Feldern gibt es die Möglichkeiten Kontrollkästchen, Textfeld und Kombinationsfeld.
  • Herkunftstyp: Gibt an, ob die Daten aus einer Tabelle/Abfrage, einer Wertliste oder Feldliste stammen. In der Regel verwendet man hier Tabelle/Abfrage.
  • Datensatzherkunft: Gibt die Bezeichnung der tatsächlichen Datenquelle an, die davon abhängt, welchen Wert man für Herkunftstyp gewählt hat. Bei Tabelle/Abfrage gibt man hier entweder den Namen einer Tabelle oder Abfrage an oder auch eine Abfrage in Form einer SQL-Anweisung – so, wie es auch beim Nachschlage-Assistenten geschieht.
  • Gebundene Spalte: Gibt an, welche der Spalten der Datensatzherkunft an das hier definierte Feld der Tabelle gebunden wird.
  • Spaltenanzahl: Legt fest, wieviele Spalten der Datensatzherkunft im Nachschlagefeld angezeigt werden sollen.
  • Spaltenüberschriften: Gibt an, ob die Feldnamen der Datensatzherkunft als Spaltenüberschriften angezeigt werden sollen.
  • Spaltenbreiten: Gibt die Breite der einzelnen anzuzeigenden Spalten der Datensatzherkunft an.
  • Zeilenanzahl: Gibt an, wieviele Zeilen das aufgeklappte Nachschlagefeld anzeigen soll.
  • Listenbreite: Legt die Breite der ausgeklappten Liste in Zentimetern fest.
  • Nur Listeneinträge: Gibt an, ob nur Listeneinträge ausgewählt werden können oder auch andere Werte.
  • Mehrere Werte zulassen: Legt fest, ob nur ein Wert ausgewählt werden kann oder auch mehrere.
  • Bearbeitungsformular für Listenelemente: Erlaubt die Angabe eines Formulars, mit dem die Listenelemente bearbeitet werden können.
  • Nur Datensatzherkunftswerte anzeigen: Legt fest, ob nur Elemente der Datensatzherkunft angezeigt werden dürfen.

Die Eigenschaft Steuerelement anzeigen haben wir ja bereits kennengelernt – mit dieser wählen wir für Nachschlagefelder in Tabellen immer den Wert Kombinationsfeld aus (mehr zur möglichen Alternative Listenfeld gleich im Anschluss). Die übrigen Eigenschaften betrachten wir in den nachfolgenden Abschnitten.

Wozu der Eintrag Listenfeld

Vielleicht fragst Du Dich, wozu wir an dieser Stelle ein Listenfeld gebrauchen könnten. Die Antwort ist: Wenn Du das Nachschlagefeld nutzen möchtest, um damit in der Datenblattansicht Daten aus verknüpften Tabellen auszuwählen oder auch in anderen Formularansichten automatisch Kombinationsfelder auf Basis der hier verwendeten Einstellungen zu erstellen, brauchst Du die Option Listenfeld nicht.

Es kann aber sein, dass in Formularen, die an diese Tabelle gebunden werden, ein Listenfeld zur Auswahl der Daten des Nachschlagefeldes verwendet werden soll. In diesem Fall ist die Auswahl von Listenfeld statt Kombinationsfeld sichtbar. In der Datenblattansicht von Tabellen, Abfragen oder Formularen wird jedoch immer ein Kombinationsfeld angezeigt, auch wenn Du die Option Listenfeld ausgewählt hast.

Herkunftstyp festlegen

Wenn Du Daten aus einer der übrigen Tabellen der Datenbank zur Auswahl bereitstellen möchtest, wählst Du hier den Wert Tabelle/Abfrage aus. Die Wahl des Wertes für diese Eigenschaft beeinflusst wesentlich, wie die nachfolgend beschriebene Eigenschaft Datensatzherkunft ausgewertet wird – siehe in der dortigen Beschreibung.

Es gibt noch zwei andere Werte, die wir der Vollständigkeit halber beschreiben wollen:

  • Wertliste: Diese Einstellung kannst Du nutzen, wenn das Nachschlagefeld die Werte nicht aus einer Tabelle oder Abfrage beziehen soll, sondern wenn Du die Liste manuell angeben möchtest. Du könntest beispielsweise Anreden nicht aus einer separaten Tabelle beziehen, sondern die verfügbaren Werte für die Eigenschaft Datensatzherkunft in einer durch Semikola getrennten Wertliste bereitstellen. Mehr dazu gleich.
  • Feldliste: Wählst Du diesen Wert aus, kannst Du für die Eigenschaft Datensatzherkunft den Namen einer Tabelle oder Abfrage oder eine SQL-Abfrage angeben. Das Nachschlagefeld bietet dann alle Felder dieser Datenquelle zur Auswahl an.

Datensatzherkunft einstellen

Wenn Du wie oben vorgeschlagen Tabelle/Abfrage als Wert der Eigenschaft Herkunftstyp angegeben hast, hast Du festgelegt, dass Daten aus den Tabellen der Datenbank im Nachschlagefeld erscheinen sollen. Um festzulegen, welche das sein sollen, hast Du drei Möglichkeiten:

  • Name einer Tabelle
  • Name einer gespeicherten Abfrage
  • SQL-Abfrage (SELECT …)

Der Nachschlage-Assistent stellt immer eine SQL-Abfrage auf Basis der vom Benutzer getätigten Eingaben zusammen, der beispielsweise wie folgt aussieht:

SELECT [tblKategorien].[KategorieID], [tblKategorien].[Kategoriebezeichnung] FROM tblKategorien ORDER BY [tblKategorien].[Kategoriebezeichnung] ASC;

Grundsätzlich solltest Du immer so wenige Felder wie möglich zu einer Datensatzherkunft hinzufügen – egal, ob für ein Nachschlagefeld in einer Tabelle oder einem Kombinationsfeld oder Listenfeld in einem Formular. Es kann vorkommen, dass alle Felder einer Tabelle in der Datensatzherkunft für ein Nachschlagefeld benötigt werden. Wenn die Tabelle tblKategorien nur die beiden Felder KategorieID und Kategoriebezeichnung enthält, reicht es also aus, den Wert tblKategorien für die Eigenschaft Datensatzherkunft des Nachschlagefeldes einzutragen. Dann hast Du jedoch noch keine Sortierung festgelegt und die Datensätze werden im Nachschlagefeld in der Standardsortierung ausgegeben, die sich in der Regel nach dem Wert des Primärschlüsselfeldes in aufsteigender Reihenfolge orientiert.

Um die Kategorien in aufsteigender Reihenfolge zu präsentieren, kannst Du also entweder einen SQL-Ausdruck wie oben für die Eigenschaft Datensatzherkunft eintragen oder Du gibst den Namen einer Abfrage an, die Du zuvor erstellt hast und welche die gewünschten Daten in der richtigen Reihenfolge enthält.

In jedem Fall startet das Festlegen der Datensatzherkunft mit einem Klick in das Feld für diese Eigenschaft. Du kannst dann entweder eine der bereits vorhandenen Tabellen oder Abfragen auswählen oder auf die Schaltfläche mit den drei Punkten klicken, um den Abfrageentwurf zu öffnen (siehe Bild 7).

Auswählen der Datensatzherkunft

Bild 7: Auswählen der Datensatzherkunft

Wie sich der Abfrageentwurf dann darstellt, hängt davon ab, welchen Inhalt die Eigenschaft Datensatzherkunft beim Öffnen dieser Ansicht hat. Wenn Du weißt, dass die Abfrage Daten aus der Tabelle tblKategorien liefern soll, kannst Du diese Tabelle bereits als Wert für die Datensatzherkunft auswählen und dann auf die Schaltfläche mit den drei Punkten klicken.

Die dann erscheinende Rückfrage kannst Du mit Ja bestätigen (siehe Bild 8).

Meldung vor dem Öffnen des Abfrageentwurfs

Bild 8: Meldung vor dem Öffnen des Abfrageentwurfs

Direkt im Anschluss zeigt Access den Abfrageentwurf an, der bereits die Tabelle tblKategorien im Bereich mit den als Datenquelle dienenden Tabellen enthält. Hier ziehst Du die gewünschten Felder, in diesem Fall KategorieID und Kategoriebezeichnung, in das Entwurfsraster (das gelingt auch per Doppelklick).

Dann nehmen wir noch die Einstellung vor, für die wir die Abfrage überhaupt anlegen müssen – die aufsteigende Sortierung nach den Werten des Feldes Kategoriebezeichnung. Anschließend schließt Du den Entwurf mit einem Klick auf die Schaltfläche Schließen im Ribbon (siehe Bild 9).

Zusammenstellen der Abfrage für eine Datensatzherkunft

Bild 9: Zusammenstellen der Abfrage für eine Datensatzherkunft

Access fragt nun noch, ob die Änderungen übernommen und in der Eigenschaft Datensatzherkunft gespeichert werden sollen. Diese Meldung bestätigen wir mit Ja.

Anschließend kehrt Access zum Entwurf der Tabelle zurück und zeigt die soeben zusammengestellte Abfrage als SQL-Ausdruck für die Eigenschaft Datensatzherkunft an (siehe Bild 10).

Die neue Datensatzherkunft des Nachschlagefeldes

Bild 10: Die neue Datensatzherkunft des Nachschlagefeldes

Performance-Tipp

Wenn Du die gleiche Abfrage öfter nutzt und diese viele Daten enthält, kann es sinnvoll sein, diese tatsächlich als eigene Abfrage zu speichern, beispielsweise unter dem Namen qryKategorienNachBezeichnung, und diesen Abfragenamen dann für die Eigenschaft Datensatzherkunft einzutragen. Um die Abfrage, die wir soeben für die Eigenschaft Datensatzherkunft zusammengestellt haben, schnell zu speichern, führst Du folgende Schritte durch:

  • Klicke nochmals auf die Schaltfläche mit den drei Punkten (…) neben dem Eigenschaftswert. Dies öffnet wieder die Entwurfsansicht für diese Abfrage.
  • Klicke dort im Ribbon auf die Schaltfläche Speichern unter.
  • Gib den gewünschten Namen ein, zum Beispiel qryKategorieNachBezeichnung (siehe Bild 11).
  • Abfrage speichern

    Bild 11: Abfrage speichern

  • Danach zeigt die Abfrage im Titel den Namen qryKategorieNachBezeichnung an.
  • Wenn Du den Entwurf der Abfrage nun mit einem Klick auf Schließen beendest, erscheint wieder eine Meldung, die Du mit einem Klick auf Ja bestätigst.
  • Danach erscheint der Name der zuvor gespeicherten Abfrage als Werte der Eigenschaft Datensatzherkunft (siehe Bild 12).
  • Gespeicherte Abfrage als Datensatzherkunft

    Bild 12: Gespeicherte Abfrage als Datensatzherkunft

Gebundene Spalte festlegen

Die mit der Eigenschaft Datensatzherkunft angegebene Datenquelle besteht aus Datensätzen mit einem oder mehreren Feldern. Wenn der Benutzer einen der Datensätze ausgewählt hat, müssen wir diese Auswahl irgendwie im Feld KategorieID speichern. Woher aber soll Access wissen, aus welchem Feld die zu speichernden Daten stammen Dazu nutzen wir die Eigenschaft Gebundene Spalte. Normalerweise enthält die für Datensatzherkunft angegebene Tabelle oder Abfrage als erstes Feld ein Primärschüsselfeld, dessen Werte sich als zu speichernde Werte anbieten. Dann stellen wir die Eigenschaft Gebundene Spalte auch einfach auf den Wert 1 ein. Wenn der Benutzer nun den Eintrag mit dem Primärschlüsselwert 2 aus der Datensatzherkunft auswählt, wird genau dieser Wert im Feld KategorieID der Tabelle tblArtikel gespeichert. In seltenen Fällen steht der zu speichernde Wert nicht in der ersten Spalte der Datensatzherkunft. Dann geben Sie einfach die Nummer der Spalte an, die den zu speichernden Wert enthält.

Spaltenanzahl definieren

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar