Home > Artikel > Ausgabe 7/2012 > Kombinations- und Listenfelder mit Wertliste füllen

Kombinations- und Listenfelder mit Wertliste füllen

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Neben der Zuweisung einer Tabelle oder Abfrage als Datensatzherkunft können Sie Kombinations- und Listenfelder auch mit einfachen Wertlisten füllen. Dabei handelt es sich um Zeichenketten, die durch Semikola voneinander getrennt werden. Dieser Artikel zeigt, wie Sie Kombinations- und Listenfelder mit Wertlisten füllen und was Sie dabei beachten müssen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1207_KombinationsfeldWertliste.mdb.

Einfache Wertlisten

Wenn Sie in einem Formular ein Kombinationsfeld angelegt haben, dass schlicht und einfach wenige Einträge zur Auswahl anbieten soll, können Sie diese Werte mithilfe einer Wertliste zuweisen. Dazu stellen Sie einfach zwei Eigenschaften des Kombinationsfeldes wie in Bild 1 ein. Für die Eigenschaft Herkunftsart wählen Sie den Eintrag Wertliste aus und für die Eigenschaft Datensatzherkunft tragen Sie etwa den folgenden Ausdruck ein:

Kombinationsfeld mit einer einfachen Wertliste als Datensatzherkunft

Bild 1: Kombinationsfeld mit einer einfachen Wertliste als Datensatzherkunft

"Herr";"Frau"

Das Ergebnis sieht dann etwa wie in Bild 2 aus. Wenn Sie den Inhalt des Kombinationsfeldes auswerten, erhalten Sie etwas mit folgenden Ausdruck über das Direktfenster den gewählten Eintrag:

Auswahl eines Eintrags der Wertliste

Bild 2: Auswahl eines Eintrags der Wertliste

  Forms!frmEinfacheWertliste!cboAnrede

Herr

Mehrspaltige Wertlisten

Nun möchten Sie vielleicht einen nicht angezeigten, aber dem gewählten Eintrag entsprechenden Ausdruck verwenden (siehe Kombinationsfeld cboAnredeMitID im Beispielformular frmEinfacheWertliste).

Der angezeigte Ausdruck Herr soll beispielsweise den Wert 1, der Ausdruck Frau den Wert 2 liefern. Dazu muss das Kombinationsfeld zwei Spalten enthalten, von denen die erste die gebundene, nicht angezeigte Spalte ist.

Dazu verwenden Sie ein ähnliches Kombinationsfeld, allerdings mit etwas anderen Eigenschaften. Zunächst stellen Sie die Eigenschaft Spaltenanzahl auf 2 und die Eigenschaft Spaltenbreiten auf 0cm ein. Dadurch zeigt das Kombinationsfeld seine Daten nun in zwei Spalten an, wobei die erste jedoch eine Breite von 0cm aufweist – die zweite nimmt dadurch automatisch den übrigen Platz ein.

Fehlt noch die Eingabe der Zahlenwerte für die Wertliste. Dazu weisen Sie der Eigenschaft Datensatzherkunft den folgenden Ausdruck zu:

1;"Herr";2;"Frau"

Da die Eigenschaft Spaltenbreiten den Wert 2 enthält, liest Access automatisch jeweils zwei Werte für jede Zeile ein, also die ersten beiden für die erste Zeile und die letzten beiden für die zweite Zeile. Die Zahlenwerte werden jeweils mit der Breite 0cm angezeigt und somit ausgeblendet, die Anreden werden weiterhin angezeigt.

Wenn Sie nun mit folgendem Ausdruck den Wert des gewählten Eintrags ermitteln, liefert dies den Wert 1 oder 2 statt der Einträge Herr oder Frau:

Forms!frmEinfacheWertliste!cboAnredeMitID

Wertliste per VBA zusammenstellen

Manche Konstellationen verlangen nach einer dynamischen Zusammenstellung des Ausdrucks, den Sie der Eigenschaft Datensatzherkunft zuweisen.

Grundsätzlich ist dies kein Problem: Sie brauchen nur eine entsprechende Schleife zu durchlaufen und die anzuzeigenden Werte zu einer durch Semikola getrennten Zeichenkette zusammenfügen.

Verwenden wir doch ein praktisches Beispiel, um dies zu demonstrieren. Ein Formular wie aus Bild 3 soll es ermöglichen, alle in dem im Textfeld txtVerzeichnis enthaltenen Unterverzeichnisse und Dateien anzuzeigen.

Dynamisch zusammengestellte Wertliste

Bild 3: Dynamisch zusammengestellte Wertliste

Zur Anzeige verwenden wir diesmal statt eines Kombinationsfeldes ein Listenfeld – dies ist in diesem Falle übersichtlicher.

Damit Sie das Verzeichnis, dessen Unterverzeichnisse und Dateien angezeigt werden sollen, leicht auswählen können, fügen Sie neben dem Textfeld txtVerzeichnis eine Schaltfläche namens cmdVerzeichnisAuswaehlen hinzu.

Diese löst die folgende Prozedur aus:

Private Sub cmdVerzeichnisAuswaehlen_Click()

     Me!txtVerzeichnis = _

         OpenPathName(CurrentProject.Path)

     Me!lstDateien.RowSource = _

         DateienEinlesen(Me!txtVerzeichnis)

End Sub

Die erste Zeile ruft die Funktion OpenPathName auf, die einen Verzeichnisauswahl-Dialog wie in Bild 4 anzeigt. Die Funktion erwartet ein Startverzeichnis als Parameter und liefert den Namen des ausgewählten Verzeichnisses zurück.

Dialog zur Auswahl eines Verzeichnisses

Bild 4: Dialog zur Auswahl eines Verzeichnisses

Die zweite Anweisung erledigt das, was Sie im vorherigen Beispiel noch über das Eigenschaftsfenster erledigt haben: Sie weist der Eigenschaft RowSource (das ist das VBA-Pendant zum Eintrag Datensatzherkunft im Eigenschaftsfenster) die anzuzeigende Wertliste zu. Und diese wird hier mithilfe einer eigenen VBA-Funktion ermittelt.

Diese Funktion heißt DateienEinlesen und sieht wie in Listing 1 aus.

Function DateienEinlesen(strVerzeichnis As String) As String

     Dim strTemp As String

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!