Home > Artikel > Ausgabe 9/2011 > Optionsgruppen und Optionsfelder

Optionsgruppen und Optionsfelder

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

Wenn sich für ein Feld einer Tabelle mehrere Werte einstellen lassen, liegen diese Werte meist in einer Lookup-Tabelle und werden per Nachschlagefeld beziehungsweise per Kombinationsfeld ausgewählt. Manchmal ist die Anzahl der verfügbaren Werte jedoch begrenzt und wird vor allem nicht erweitert. Und wenn die Werte dann auch noch übersichtlich im Formular dargestellt werden sollen, ist eine Optionsgruppe mit entsprechenden Optionsfeldern die richtige Wahl.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1109_Optionsgruppen.mdb.

Wert auswählen

Kombinationsfelder, Listenfelder, Kontrollkästchen und Optionsgruppen sind allesamt Steuerelemente, mit denen Sie mindestens einen von mehreren Werten auswählen können – unabhängig davon, ob das Steuerelement an ein Feld einer Datenherkunft gebunden ist oder nicht. Während Kombinationsfelder meist zur Auswahl eines Wertes aus einer verknüpften Tabellen dienen, Sie mit Listenfeldern einen oder mehrere Werte markieren können und Kontrollkästchen meist Ja/Nein-Werte markieren, können Sie mit einer Optionsgruppe und den enthaltenen Optionsfeldern einen Wert aus einer limitierten Anzahl von Werten auslesen.

Da die Optionsfelder einer Optionsgruppe statisch im Entwurf eines Formulars angelegt werden, kommen Sie nicht für die Auswahl von Daten infrage, die sich im Laufe der Zeit ändern können, weil Daten hinzukommen oder wegfallen. Sie dienen eher der Festlegung von Werten wie Klein/Mittel/Groß, von Farben, alternativ zum Kontrollkästchen für Ja/Nein-Werte und Artverwandte oder auch für andere Eigenschaften, für die zwei oder mehr Werte zur Auswahl stehen. Eine Optionsgruppe kann an ein Feld einer Tabelle gebunden sein oder auch für sich allein stehen – etwa, um ein zu öffnendes Formular oder einen Bericht auszuwählen, dass danach per Schaltfläche geöffnet wird.

Ungebundene Optionsgruppen

Im ersten Beispiel legen wir einfach eine Optionsgruppe mit drei Optionsfeldern an, um die wichtigsten Eigenschaften dieser Steuerelemente kennenzulernen. Erstellen Sie dazu ein neues Formular in der Entwurfsansicht und fügen Sie diesem zunächst eine Optionsgruppe hinzu. Dazu klicken Sie in der Liste der Steuerelemente auf das Optionsgruppe-Steuerelement und ziehen dann im Entwurf des Formulars einen Rahmen mit der gewünschten Größe auf.

Die Optionsgruppe hat zunächst eine wichtige Eigenschaft: den Namen (siehe Bild 1). Diesen stellen Sie auf einen aussagekräftigen Wert ein (in diesem Fall ogrBeispiel). Der Name ist nicht zu verwechseln mit der Beschriftung: Diese kommt mit einem angehefteten Bezeichnungsfeld. Auch diese sollten Sie direkt anpassen, indem Sie zuerst auf das Bezeichnungsfeld klicken und dann seine Eigenschaft Beschriftung ändern. Den Namen des Bezeichnungsfeldes müssen Sie indes nicht anpassen, Sie werden im Normalfall nicht per VBA darauf zugreifen.

Einstellen des Namens einer frisch angelegten Optionsgruppe

Bild 1: Einstellen des Namens einer frisch angelegten Optionsgruppe

Optionsfelder hinzufügen

Wenn Sie nun in der Liste der Steuerelemente auf ein Optionsfeld klicken und dann mit der Maus über die Optionsgruppe fahren, wissen Sie, wann Sie loslassen müssen – nämlich dann, wenn der Hintergrund der Optionsgruppe schwarz wird (siehe Bild 2). Achtung: Wenn Sie das Optionsfeld irgendwo außerhalb der Optionsgruppe platzieren und es später in die Optionsgruppe ziehen, wird es nicht mit der Optionsgruppe verknüpft, sondern steht für sich allein! Die einzige Möglichkeit, ein solches Optionsfeld noch zur Optionsgruppe hinzuzufügen, ist das Ausschneiden (zum Beispiel mit Strg + X), Markieren der Optionsgruppe und Einfügen (Strg + V). Fügen Sie auf diese Weise drei Optionsfelder zur Optionsgruppe hinzu. Die Optionsfelder bestehen wiederum aus dem eigentlichen Steuerelement und einem daran gebundenen Bezeichnungsfeld.

Hinzufügen eines Optionsfeldes zu einer Optionsgruppe

Bild 2: Hinzufügen eines Optionsfeldes zu einer Optionsgruppe

Stellen Sie die Beschriftung der drei Optionsfelder auf Herr, Frau und Firma ein (siehe Bild 3). Die Beschriftungen sind, bezogen auf die Funktion der angelegten Steuerelemente, Schall und Rauch. Sie dienen lediglich dazu, dem Benutzer zu zeigen, welche Bedeutung die einzelnen Optionen haben. Tatsächlich wichtig ist der Wert, den Sie für die Eigenschaft Wert der drei Optionsfelder vergeben. Wenn Sie die Optionsfelder alle einzeln über die Steuerelement-Liste angelegt haben, hat Access die Eigenschaft Wert automatisch vorbelegt, und zwar mit den Werten 1, 2 und 3. Bild 4 zeigt die Vorbelegung dieser Eigenschaft mit dem Wert 1. Sie können die Optionsfelder auch hinzufügen, indem Sie das erste auf herkömmlichem Wege über die Steuerelement-Liste beziehen und dieses dann entsprechend der benötigten Anzahl von Optionsfeldern kopieren. Diese Vorgehensweise zaubert zwar schnell einige Optionsfelder in die Optionsgruppe, übernimmt aber leider auch den Wert des Originaloptionsfeldes. Das heißt, dass Sie die Werte der übrigen Felder später manuell anpassen müssen. Das ist natürlich kein Problem, wenn Sie ohnehin andere Werte als 1, 2, 3 und so weiter benötigen.

Hinzufügen weiterer Optionsfelder

Bild 3: Hinzufügen weiterer Optionsfelder

Wert eines der Optionsfelder

Bild 4: Wert eines der Optionsfelder

Standardwert festlegen

Beim Öffnen des Formulars soll üblicherweise gleich eine Option ausgewählt sein. Dies erreichen Sie, indem Sie für die Eigenschaft Standardwert des Optionsgruppen-Steuerelements einen der für die Optionsfelder vergebenen Werte eintragen. Im Beispiel aus Bild 5 handelt es sich um das oberste Optionsfeld mit dem Wert 1. Wenn Sie keinen Standardwert auswählen und der Benutzer keine Option auswählt, hat die Optionsgruppe den Wert Null. Da dies in den wenigsten Fällen erwünscht, sollten Sie dem mit einer entsprechenden Validierung oder der Vorgabe eines Standardwerts vorbeugen.

Standardwert der Optionsgruppe festlegen

Bild 5: Standardwert der Optionsgruppe festlegen

Wert auslesen

Auf den Wert einer Optionsgruppe greifen Sie über die Wert-Eigenschaft der Optionsgruppe zu. Wenn Sie testweise den aktuellen Wert der Optionsgruppe sehen möchten, fügen Sie ein Textfeld zum Formular hinzu und stellen seine Eigenschaft Steuerelementinhalt auf den folgenden Wert ein:

=[ogrBeispiel].[Wert]

Da die Eigenschaft Wert die Standardeigenschaft dieses Steuerelements ist, reicht auch der folgende Ausdruck:

=[ogrBeispiel]

Wenn Sie nun in die Formularansicht wechseln, zeigt das Textfeld direkt nach dem Auswählen jeweils den Wert des aktuell ausgewählten Optionsfeldes an (siehe Bild 6).

Ausgabe des aktuellen Werts einer Optionsgruppe

Bild 6: Ausgabe des aktuellen Werts einer Optionsgruppe

Per VBA auf eine Änderung reagieren

Wenn Sie beim Ändern der ausgewählten Option eine VBA-Prozedur starten möchten, die eine Aktion auf Basis der ausgewählten Option durchführt, ist das auch kein Problem. Markieren Sie die Optionsgruppe in der Entwurfsansicht des Formulars und tragen Sie für die Eigenschaft Nach Aktualisierung den Wert [Ereignisprozedur] ein. Klicken Sie dann auf die Schaltfläche mit den drei Punkten rechts neben der Eigenschaft und ergänzen Sie die nun im VBA-Editor erscheinende Prozedur wie folgt:

Private Sub ogrBeispiel_AfterUpdate()

     MsgBox "Der aktuelle Wert der Optionsgruppe lautet " & Me!ogrBeispiel & "."

End Sub

Der Wert der Optionsgruppe wird hier einfach durch das Referenzieren des entsprechenden Steuerelements über seinen Namen realisiert (Me!ogrBeispiel), der Wert in einem Meldungsfenster ausgeben. Wenn Sie lieber die für das Optionsfeld angegebene Beschriftung ausgeben möchten, kommen Sie um ein wenig Schreibarbeit nicht herum. Das Ergebnis sieht so aus:

Private Sub ogrBeispiel_AfterUpdate()

     Select Case ogrBeispiel

         Case 1

             MsgBox "Gewählter Wert: Herr"

         Case 2

             MsgBox "Gewählter Wert: Frau"

         Case 3

             MsgBox "Gewählter Wert: Firma"

     End Select

End Sub

Gebundene Optionsgruppen

Sie können Optionsgruppen auch an ein Feld der Datenherkunft eines Formulars binden. Die einzelnen Optionsfelder der Optionsgruppe repräsentieren dann die Werte, die das zugrunde liegende Feld annehmen kann. Im Beispiel wollen wir die Anrede eines Kunden auswählen. Das Formular binden Sie an die Tabelle tblKunden der Beispieldatenbank. Die Beispieldatenbank besitzt eine weitere Tabelle namens tblAnreden. Diese enthält die Lookupdaten für das Feld AnredeID der Tabelle tblKunden, die wir mit der Optionsgruppe abbilden wollen (siehe Bild 7). Die Tabelle tblAnreden enthält die drei Werte Herr, Frau und Firma, denen die Primärschlüsselwert 1, 2 und 3 zugewiesen wurden. Diese werden gleich noch benötigt! Erstens soll natürlich in das Fremdschlüsselfeld AnredeID der Tabelle tblKunden einer der drei Werte 1, 2 oder 3 eingetragen werden, um dem Kunden die entsprechende Anrede zuzuweisen. Zweitens müssen wir die Optionsfelder der Optionsgruppe mit genau diesen Werten ausstatten. Legen Sie also ein neues Formular an und legen Sie die Tabelle tblKunden als Datenherkunft fest. Ziehen Sie die drei Felder KundeID, Vorname und Nachname in den Detailbereich des Formularentwurfs.

Beispieltabellen zur Demonstration einer gebundenen Optionsgruppe

Bild 7: Beispieltabellen zur Demonstration einer gebundenen Optionsgruppe

Gebundene Optionsgruppe hinzufügen

Das Anlegen der gebundenen Optionsgruppe führen Sie auf eine der folgenden Arten durch. Bei der ersten Methode fügen Sie zunächst eine Optionsgruppe zum Formular hinzu und stellen die Beschriftung auf einen Text wie etwa Anrede ein. Wählen Sie für die Eigenschaft Steuerelementinhalt der Optionsgruppe das Feld AnredeID aus und vergeben Sie den Namen ogrAnredeID für die Optionsgruppe. Ziehen Sie dann drei Optionsfelder in die Optionsgruppe und beschriften Sie diese mit Herr, Frau und Firma. Weisen Sie dann der Eigenschaft Wert die drei Zahlen 1, 2 und 3 zu.

Nach dem Wechsel in die Formularansicht und dem Eingeben eines Datensatzes sieht die Optionsgruppe wie in Bild 8 aus. Wenn Sie die Tabelle tblKunden öffnen, finden Sie die per Optionsgruppe ausgewählten Zahlenwerte im Feld AnredeID wieder (siehe Bild 9). Wenn Sie durch die Datensätze blättern, stellen Sie außerdem fest, dass die Optionsgruppe jeweils das richtige Optionsfeld markiert.

Optionsgruppe zum Auswählen der Anrede

Bild 8: Optionsgruppe zum Auswählen der Anrede

Die mit der Optionsgruppe ausgewählten Werte landen zuverlässig in der Tabelle.

Bild 9: Die mit der Optionsgruppe ausgewählten Werte landen zuverlässig in der Tabelle.

Mit einer alternativen Vorgehensweise sparen Sie sich beim Anlegen einen Schritt. Dazu klicken Sie zunächst auf das Optionsgruppen-Steuerelement in der Steuerelementliste und ziehen dann das Feld, an welches die Optionsgruppe gebunden werden soll, in den Formularentwurf – in diesem Fall das Feld AnredeID. Das Steuerelement heißt dann gleich AnredeID und die Beschriftung erhält ebenfalls diesen Wert. Außerdem wird die Optionsgruppe dann direkt an das gleichnamige Feld gebunden. Die Optionsfelder müssen Sie allerdings weiterhin von Hand hinzufügen.

Abhängige Optionsgruppen

Als Praxisbeispiel schauen wir uns noch die Funktionsweise zweier abhängiger Optionsgruppen an. Dazu fügen wir der Tabelle tblKunden zwei Zahlenfelder namens KundenartID und ZahlungsartID hinzu (siehe Bild 10). Da wir die Werte (Privat und Geschäftlich als Kundenart sowie Banküberweisung, Bankeinzug, Per Nachname und Paypal) sowieso nur in Form der Beschriftung der Optionsfelder sehen, legen wir der Einfachheit halber keine Lookup-Tabellen für diese beiden Felder an.

Zwei weitere Felder dienen als Beispiel für abhängige Optionsgruppen.

Bild 10: Zwei weitere Felder dienen als Beispiel für abhängige Optionsgruppen.

Fügen Sie für das Feld KundenartID eine Optionsgruppe namens ogrKundenartID hinzu (nicht vergessen, KundenartID als Steuerelementinhalt festzulegen) und statten Sie dieses mit zwei Optionsfeldern aus. Das erste erhält die Beschriftung Privat und den Wert 1, die zweite die Beschriftung Geschäftlich und den Wert 2.

Das Feld ZahlungsartID wird durch die Optionsgruppe ogrZahlungsartID repräsentiert. Es enthält vier Optionsfelder, die wie in Bild 11 angeordnet und von 1 bis 4 durchnummeriert sind.

Formular mit abhängigen Optionsgruppen in der Entwurfsansicht

Bild 11: Formular mit abhängigen Optionsgruppen in der Entwurfsansicht

Da die Optionsfelder der Optionsgruppe ogrZahlungsartID in Abhängigkeit des Wertes der Optionsgruppe ogrKundenartID aktiviert oder deaktiviert werden sollen, müssen Sie diese später per Code ansprechen. Damit der Code übersichtlich bleibt, benennen Sie daher die vier Optionsgruppen mit optUeberweisung, optBankeinzug, optNachnahme und optPaypal.

Sie können den Wert der beiden Felder nun schon prima mit den beiden Optionsgruppen einstellen.

Allerdings wollen wir erreichen, dass für eine Auswahl der Kundenart nur bestimmte Zahlungsarten freigeschaltet werden – beispielsweise soll ein Privatkunde nur die beiden Zahlungsarten Nachnahme und Paypal verwenden dürfen und ein geschäftlicher Kunde nur Bankeinzug, Paypal und Überweisung.

Wir müssen also das Ereignis Nach Aktualisierung der Optionsgruppe ogrKundenartID abgreifen und abhängig vom gewählten Wert die entsprechenden Zahlungsarten aktivieren beziehungsweise deaktivieren.

Dazu legen Sie die folgende Ereignisprozedur an:

Private Sub ogrKundenart_AfterUpdate()

     Select Case Me!ogrKundenart

         Case 1 'Privat

             Me!optBankeinzug.Enabled = False

             Me!optNachnahme.Enabled = True

             Me!optPaypal.Enabled = True

             Me!optUeberweisung.Enabled = False

         Case 2 'Geschäftlich

             Me!optBankeinzug.Enabled = True

             Me!optNachnahme.Enabled = False

             Me!optPaypal.Enabled = True

             Me!optUeberweisung.Enabled = True

     End Select

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!