Standardwerte aus Lookup-Tabellen

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).
  • pic001.png

    Bild 1: Festlegen eines Standardwertes im Tabellenentwurf

    pic003.png

    Bild 2: Standardwert in der Datenblattansicht

  • 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.
  • pic002.png

    Bild 3: Festlegen eines Standardwertes im Formularentwurf

  • 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.

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.

pic005.png

Bild 4: Optionentabelle mit aktuell nur einer Option

pic004.png

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:

pic006.png

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.

pic009.png

Bild 9: Der Standardwert kann gleich nach der Auswahl eines Wertes auf den gewählten Wert eingestellt werden.

pic007.png

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).

pic008.png

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.

In einer Bestellverwaltung sollen für jeden Kunden verschiedene Kostenstellen verwaltet werden, die, sofern der Kunde die Bestellungen mit seinen Kunden oder einem bestimmten Projekt weiterverrechnen will, den einzelnen Positionen einer Bestellung zugeordnet werden können.

Sprich: Es gibt je Kunde eine Tabelle mit Kostenstellen, die dem Kunden zugeordnet sind – etwa über eine Verknüpfung des Fremdschlüsselfeldes KundeID der Kostenstellentabelle mit dem Feld KundeID der Kundentabelle. In der Tabelle der Bestellpositionen soll für jede Position eine Kostenstelle angegeben werden.

Nun soll auch hier ein Standardwert für die Kostenstelle je Kunde festgelegt werden, die beim Anlegen einer neuen Position verwendet wird.

Lookup-Standardwert, Variante I

Dafür gibt es mindestens zwei Möglichkeiten. Die erste sieht im Datenmodell wie in Bild 10 aus (siehe Beispieldatenbank Standardwerte_1.mdb).

pic010.png

Bild 10: Standardwert für abhängige Verknüpfungen, erste Variante

Dort gibt es eine Tabelle namens tblKostenstellen, in welcher die Bezeichnung der Kostenstelle sowie die ID des Kunden gespeichert werden soll, zu dem die Kostenstelle gehört.

Jeder Kunde hat andere Bezeichnungen für seine Kostenstellen, daher ist dies sinnvoll. Bild 11 zeigt die Tabelle tblKostenstellen mit ein paar Beispieldatenbank.

pic014.png

Bild 11: Die Tabelle tblKostenstellen mit dem Fremdschlüsselfeld KundeID

Die Tabelle tblPositionen enthält ein Feld namens KostenstelleID, mit dem eine der Kostenstellen ausgewählt werden soll. Im Formular wird die Auswahl der verfügbaren Kostenstellen dann auf die Kostenstellen zum aktuellen Kunden eingeschränkt.

Nun soll das Feld KostenstelleID noch mit einem durch den Benutzer (oder auf eine der oben genannten Methoden) festzulegenden Standardwert belegt werden.

Dazu haben wir in der ersten Variante ein Feld namens StandardkostenstelleID zur Tabelle tblKunden hinzugefügt.

Diese Tabelle ist ebenfalls als Nachschlagefeld zur Auswahl der Datensätze der Tabelle tblKostenstellen ausgelegt, und auch im Formular zur Einstellung der Werte der enthaltenen Datensätze sollen nur die Kostenstellen angezeigt werden, die zum aktuellen Kunden gehören.

Nach der Auswahl der Standardkostenstelle eines Kunden soll beim Neuanlegen von Bestellpositionen immer diese Kostenstelle als Standardwert für das Feld KostenstelleID vorgegeben werden.

Als Beispiel verwenden wir ein Formular wie in Bild 12. Das Unterformular zeigt alle Datensätze der Tabelle tblPositionen für den aktuell im Hauptformular ausgewählten Kunden-Datensatz.

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