Es gibt eine Reihe von Beispielen für den Einsatz von Lookup-Tabellen – die einfachste ist wohl die Tabelle zum Speichern von Anreden. In einigen Fällen soll eines der enthaltenen Elemente standardmäßig verwendet werden. Dann gilt es, dieses Standardelement entsprechend zu deklarieren. Wie so oft gibt es unter Access verschiedene Möglichkeiten, dies zu realisieren – und es gibt verschiedene Schwierigkeitsgrade. Dieser Beitrag zeigt einige Varianten auf.
Einfache Standardwerte
Wenn ein Formular auf einer Tabelle etwa namens tblKunden basiert, welche die Auswahl der Anrede per Nachschlagefeld ermöglicht, kann der Benutzer eine der Anreden auswählen – zum Beispiel Herr, Frau oder Firma.
Das heißt, dass der Benutzer immer eine Auswahl treffen muss. Diese Arbeit können Sie dem Benutzer erleichtern, indem Sie einen der Werte des Kombinationsfeldes als Standardwert festlegen. Dazu gibt es verschiedene Varianten:
- Sie legen einen der Werte des Primärschlüsselfeldes der Tabelle tblAnreden als Standardwert der Tabelle tblKunden fest (s. Bild 2).
- Sie legen einen der Werte des Primärschlüsselfeldes der Tabelle tblAnreden als Standardwert des Kombinationsfeldes im Formular fest. Wie dies gelingt, zeigt Bild 3. Wenn Sie ein gebundenes Feld auf Basis eines Feldes der Datenherkunft aus der Feldliste in das Formular ziehen, wird die Standardwert-Eigenschaft mit dem gleichen Wert wie in der Tabelle eingerichtet.
- Sie lassen den Benutzer festlegen, welcher der Werte der Tabelle tblAnreden als Standardwert verwendet werden soll. Eine solche Information würde man dann beispielsweise in einer Optionen-Tabelle verwalten.
Bild 1: Festlegen eines Standardwertes im Tabellenentwurf
Bild 2: Standardwert in der Datenblattansicht
Bild 3: Festlegen eines Standardwertes im Formularentwurf
Standardanrede in Optionentabelle
Eine einfache Optionentabelle mit nur der einen benötigten Option könnte im Entwurf wie in Bild 5 ganz einfach den gewünschten Standardwert auswählen.
Bild 4: Optionentabelle mit aktuell nur einer Option
Bild 5: Festlegen der Standardanrede in der Optionentabelle
In einem Formular, welches ein Nachschlagefeld namens AnredeID auf Basis der Tabelle tblAnreden einsetzt, können Sie den in der Tabelle tblOptionen festgelegten Standardwert wie in Bild 6 einstellen – und zwar mit einer einfachen DLookup-Abfrage:
Bild 6: Dynamischer Standardwert
=DomWert("Standardanrede";"tblOptionen")
Wenn Sie den Standardwert in der Tabelle tblOptionen bei geöffnetem Formular frmKunden ändern, wird beim Anlegen des folgenden Datensatzes bereits der gewählte Standardwert verwendet.
Im Tabellenentwurf können Sie einen solchen Ausdruck übrigens nicht verwenden. Dort sind nur ganz wenige Standardfunktionen wie etwa Datum() oder statische Werte erlaubt.
Meistgenutzter Wert als Standard
Wenn Sie es auf die Spitze treiben möchten, können Sie auch jeweils abfragen, welcher Wert des Nachschlagefeldes bisher am meisten verwendet wurde. Dazu brauchen Sie die Optionentabelle nicht mehr, sondern passen nur den Ausdruck für die Eigenschaft Standardwert an – und zwar auf diesen Ausdruck (im Beispielformular frmKunden für das Kombinationsfeld cboAnredeIDMeistgenutzt eingestellt):
=DomWert("AnredeID";"qryMeisteAnrede")
Die dort verwendete Abfrage qryMeisteAnrede sieht im Entwurf wie in Bild 8 aus.
Bild 9: Der Standardwert kann gleich nach der Auswahl eines Wertes auf den gewählten Wert eingestellt werden.
Bild 7: Abfrage zur Ermittlung der meistgenutzten Anrede im Entwurf …
In diesem Fall ermittelt das Formular bei jedem Wechseln zum neuen Datensatz, welche Anrede eingesetzt werden soll.
Letzte Auswahl verwenden
Wenn Sie für neue Datensätze jeweils den zuvor gespeicherten Wert im Nachschlagefeld als Standardwert nutzen wollen, benötigen Sie eine kleine VBA-Routine, die nach dem Speichern des vorherigen Datensatzes den Standardwert neu setzt. Im Fall des Fremdschlüsselfeldes AnredeID verwenden Sie den folgenden Ausdruck – hier in der Ereignisprozedur, die durch das Ereignis Nach Aktualisierung des Kombinationsfeldes cboAnredeIDVorher im Beispielformular frmKunden ausgelöst wird:
Private Sub cboAnredeIDVorher_Click() Me!cboAnredeIDVorher.DefaultValue = Str(CDbl(Me!cboAnredeIDVorher)) End Sub
Die Wirkung zeigt sich sofort. Im Beispielformular frmKunden brauchen Sie nur einen neuen Wert für das unterste Kombinationfeld auszuwählen und nach Vervollständigung der übrigen Felder zu einem neuen Datensatz zu wechseln. Dieser zeigt dann gleich den zuletzt festgelegten Eintrag als Standardwert an (s. Bild 9).
Bild 8: … und in der Datenblattansicht
Abhängige Lookup-Datensätze
Mit abhängigen Lookup-Datensätzen sind solche Datensätze einer Lookup-Tabelle gemeint, die nicht allgemein ausgewählt werden sollen, sondern nur in Abhängigkeit vom aktuellen Datensatz der verknüpften Tabelle. Dies lässt sich am besten anhand eines Beispiels erläutern – in diesem Falle an den Kostenstellen eines Kunden.