Lookup-Daten verwalten

Verknüpfte Daten aus 1:n-Beziehungen stammen oft aus Tabellen, die nur ein Feld oder zumindest wenige Felder enthalten. Solche Daten zeigt man in Kombinationsfeldern an, die Bearbeitung erfolgt in der Regel in entsprechenden Formularen. Die Anzahl der Formulare steigt mit der Anzahl der Lookup-Tabellen und somit auch der Aufwand bei änderungen. Dieser Beitrag zeigt, wie Sie sich die Arbeit vereinfachen und eine Menge Formulare sparen.

Beispiele für Tabellen mit Lookup-Daten sind solche, die Anreden oder Titel von Personen, Abteilung oder Position von Mitarbeitern oder auch Marke und Treibstoffart von Fahrzeugen speichern. Ihre Daten werden von den übergeordneten Tabellen mit einem einfachen Fremdschlüsselfeld, gegebenenfalls direkt mit Nachschlagefeldfunktion verknüpft.

Warum Lookup-Tabellen

Der Grund für die Verwendung von Lookup-Tabellen sind Felder, die sich oft wiederholende und somit redundante Daten enthalten, die in der Folge zu Inkonsistenzen führen können. Das einfachste Beispiel ist das Feld Anrede, das in allen irgendwie mit Personendaten gefüllten Tabellen vorkommt. Es enthält normalerweise Daten wie Herr oder Frau. Mit diesem Feld ließen sich die in der Tabelle gespeicherten Personen also leicht nach Geschlecht unterteilen, indem man alle Datensätze ausgibt, die dort entweder den Wert Herr oder Frau aufweisen. Wenn aber nun einem Benutzer der Datenbank ein Tippfehler unterläuft, funktioniert dies nicht mehr: Lautet der Inhalt des Feldes Anrede für einen Datensatz Herrn statt Herr, wird dieses Feld bei einer Suche nach allen männlichen Personen übergangen.

Also quartiert man die Inhalte solcher Felder in eigene Tabellen aus, die aus einem Primärschlüssel wie ID oder AnredeID und dem Feld mit den eigentlichen Werten bestehen, und fügt der Tabelle mit den Personendaten ein Feld etwa namens AnredeID hinzu, das den im Primärschlüsselfeld der neu geschaffenen Lookuptabelle gespeicherten Wert enthält.

Neben der Tatsache, dass nun nur noch die für dieses Feld bestimmten Werte verfügbar sind, gibt es zwei weitere Vorteile:

  • Sie können ein Nachschlagefeld direkt in der Tabelle mit den Personendaten einrichten, das die Auswahl der verfügbaren Anreden erlaubt, sodass Tippfehler ausgeschlossen sind.
  • Sie sparen höchstwahrscheinlich Speicherplatz. Zwar kostet die Lookuptabelle zunächst ein wenig Platz, aber da Sie in der Tabelle mit den Personendaten nur noch die ID der betroffenen Anrede aus der Tabelle tblAnreden speichern müssen, fallen hier nur noch zwei Byte pro Anrede (Long Integer) an, während für Zeichenketten zwei Byte pro Zeichen anfallen, also allein für die Bezeichnung Herr oder Frau je acht Byte.

Weitere Informationen zum Einsatz von Lookup-Tabellen finden Sie im Beitrag Lookup-Daten in der Praxis (Shortlink 211); wir steigen nun direkt in das Verwalten der in Lookup-Tabellen gespeicherten Daten ein.

Lookup-Datenformular

Die Daten mancher Lookup-Tabellen, wie etwa Anreden, brauchen nie geändert zu werden, daher sieht man auch kein Formular vor, das diese anzeigt und zur Bearbeitung anbietet. Ihre Daten erscheinen in den Kombinationsfeldern zur Auswahl in den Tabellen, die per Fremdschlüsselfeld mit ihnen verknüpft sind.

Andere Lookup-Daten sind da schon umtriebiger: Abteilungen und Positionen ändern sich gerade in Zeiten der Globalisierung öfter mal und da freut sich der Datenbankanwender, wenn er die neuen Elemente ohne den Gang zum Entwickler selbst neu einpflegen kann.

Zu diesem Zweck verwendet man meist ein eigenes Formular für jede Lookuptabelle, die alle Einträge in Listenform, also entweder im Endlosformular oder in der Datenblattansicht, anzeigt und auch ihre Bearbeitung zulässt.

Bei größeren Datenbanken kommen so leicht einige Formulare zusammen. Das ist eigentlich kein Problem, aber wenn man irgendwann einmal das Design der Datenbank ändern möchte, ist man doch um jedes Formular froh, das man dabei aussparen kann – und wenn Sie einmal eine Datenbank mit wirklich vielen Formularen, Berichten und Modulen erstellt haben, wissen Sie, dass irgendwann auch die Übersicht im Datenbankfenster, beziehungsweise im Navigationsbereich, verlorengeht.

Es gibt sogar Datenbanken, die sich wegen der Menge der enthaltenen Objekte nicht mehr kompilieren lassen – hier würde die in diesem Beitrag vorgestellte Lösung für etwas Luft sorgen.

Generell kann es kaum schaden, wenn man Elemente einer Datenbank, die sich nur durch wenige Eigenschaften unterscheiden, zusammenfasst und parametrisiert, um sie je nach Anwendungsfall auszugestalten.

Die Formulare zur Bearbeitung von Lookup-Daten unterscheiden sich dann auch nur durch die folgenden Eigenschaften:

  • Lookuptabelle als Datenherkunft des Formulars
  • Beschriftungen der Bezeichnungsfelder
  • Steuerelementinhalte der Datenfelder
  • gegebenenfalls Anzahl der Datenfelder

Die Gemeinsamkeit der Lookup-Tabellen besteht in der geringen Anzahl von Feldern. Im besten Fall bestehen diese nur aus dem Primärschlüsselfeld und dem Feld mit der relevanten Information, also beispielsweise Anrede, Position oder Abteilung; die in diesem Beitrag vorgestellte Lösung erlaubt aber auch die Bearbeitung von Tabellen mit maximal drei Datenfeldern (es ist beispielsweise denkbar, dass eine Anreden-Tabelle auch gleich noch die Briefanrede wie Sehr geehrter Herr mitspeichert).

Bei Tabellen mit mehr Informationen sollte man davon ausgehen, dass es sich nicht mehr um eine Lookuptabelle im eigentlichen Sinne handelt und ein eigenes Formular zur Detailansicht eines einzelnen Datensatzes einplanen.

Lookup-Daten schnell bearbeiten

Die hier vorgestellte Lösung soll folgende Möglichkeiten bieten:

  • Öffnen des Formulars zum Bearbeiten der Lookup-Daten per Doppelklick auf das Kombinationsfeld mit dem Lookup-Feld oder per Klick auf eine rechts daneben befindliche Schaltfläche
  • Hinzufügen, bearbeiten und löschen der Lookup-Daten im dann erscheinenden Formular
  • Übernehmen des aktuell im Lookup-Formular ausgewählten Datensatzes per Klick auf OK oder Doppelklick auf den aktuellen Eintrag in das aufrufende Kombinationsfeld
  • Beibehalten des im Kombinationsfeld ausgewählten Lookupwerts, wenn der Benutzer das Lookup-Formular mit Abbrechen verlässt oder der Datensatzzeiger im Formular auf einen leeren, neuen Datensatz zeigt

Der Aufruf des Lookup-Formulars über das Kombinationsfeld eines anderen Formulars sollte wie in Bild 1 aussehen.

pic001.png

Bild 1: Das Lookup-Formular mit den Daten des Kombinationsfelds

Schnellstart

Wenn Sie das Lookup-Formular sofort in Ihren Datenbanken einsetzen möchten, brauchen Sie nur die folgenden Schritte durchzuführen:

  • Fügen Sie die Formulare frmListEditor und sfmListEditor sowie das Modul mdlListEditor in die Zieldatenbank ein.
  • Wenn Sie das Formular per Doppelklick auf das Kombinationsfeld mit den Lookup-Daten öffnen möchten, fügen Sie der Prozedur, die durch das Ereignis Beim Doppelklicken des Kombinationsfeldes ausgelöst wird, die folgende Zeile hinzu:
DoCmd.OpenForm "frmListEditor", WindowMode:=acDialog, OpenArgs:="Anreden bearbeiten"
  • Wenn Sie eine Schaltfläche neben dem Kombinationsfeld anlegen möchten, um die Funktion etwas offensichtlicher anzubieten, fügen Sie dem Beim Klicken-Ereignis diese beiden Zeilen hinzu:
Me.<Kombinationsfeldname>.SetFocus
DoCmd.OpenForm "frmListEditor", WindowMode:=acDialog, OpenArgs:="<Titel des Lookupformlars>"

Letzteres setzt zunächst den Fokus auf das betroffene Kombinationsfeld und öffnet dann das Formular. Was dort im Einzelnen geschieht, erfahren Sie in den folgenden Abschnitten.

Aufbau des Lookup-Formulars

Das Lookup-Formular besteht aus einem Haupt- und einem Unterformular (frmListEditor und sfmListEditor) und ist wie in Bild 2 aufgebaut.

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

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar