Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2009.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erweitern Sie Kombinationsfelder um ein Formular zum Bearbeiten zugrunde liegender Lookup-Daten.

Techniken

Formulare, Kombinationsfelder

Voraussetzungen

Access 2000 und höher

Beispieldateien

Lookup-DatenVerwalten.mdb

Shortlink

665

Lookup-Daten verwalten

André Minhorst, Duisburg

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 Abb. 1 aussehen.

pic001.png

Abb. 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, _

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Standard-Lookupformulare

Zugriff auf Daten in Formularen und Steuerelementen

Unterformulare: Daten anlegen und löschen

Tipps und Tricks

Zugriff auf Formulare

Unterformulare im Gleichschritt

Suchfunktionen von einfach bis komplex

Nachschlage- und mehrwertige Felder

Modale Dialoge mal anders

Listenfeld und Details in einem Formular

Tipps und Tricks

Auswahlfelder im Ribbon

Suchformular für die Datenblattansicht

Temporäre Datensatzgruppen

Access 2007: Anlagefelder

Ereignisprozeduren implantieren

Ereignisprozeduren

TreeView-Elemente im Griff

Änderungsdaten protokollieren

Steuerelemente zur Laufzeit verschieben

Daten visualisieren mit HTML

Preise und Mehrwertsteuer verwalten

© 2003-2015 André Minhorst Alle Rechte vorbehalten.