Alternativen in Kombinationsfeldern flexibel bestimmen

Sie m÷chten in Ihrer Access-Anwendung zwei Kombinationsfelder einbinden. Dabei soll Access den Inhalt des einen Kombinationsfeldes abhΣngig von der Auswahl im zweiten Feld einschrΣnken.

Diese komplexe Aufgabe k÷nnen Sie auf zwei verschiedene Arten bewΣltigen. Die einfachere L÷sung verwendet eine Ereignisprozedur. Leider erweist sie sich in der Praxis schnell als unflexibel. Sie sollten sie nur dann einsetzen, wenn sich die Inhalte der beiden Kombinationsfelder nicht Σndern und auch keine neuen Inhalte hinzukommen.
Schreiben Sie fⁿr diese Methode eine Ereignisprozedur, die Access immer dann ausfⁿhrt, wenn der Anwender den Inhalt der ersten Kombinationsbox Σndert. Diese Prozedur muss den aktuellen Inhalt der Kombinationsbox lesen und in AbhΣngigkeit von dieser Information das Attribut ╗RowSource½ des zugeh÷rigen Kombinationsfeldes neu belegen. In diesem Attribut speichert Access die m÷glichen Alternativen.
UmstΣndlicher, aber in der Praxis besser zu verwenden, ist die zweite Methode. Dabei mⁿssen Sie die Kombinationsfelder auf Grundlage von zwei Tabellen und einer Abfrage definieren. In diesem Fall k÷nnen Sie die Inhalte problemlos Σndern, indem Sie die DatensΣtze in den Tabellen manipulieren.
Das folgende Beispiel beschreibt das Vorgehen anhand zweier Kombinationsfelder namens ╗Kategorie½ und ╗Unterkategorie½, wobei sich die angezeigten Alternativen von ╗Unterkategorie½ an der Auswahl im Feld ╗Kategorie½ orientieren.
Erzeugen Sie zuerst die beiden Tabellen ╗tblKategorie½ und ╗tblUnterkategorie½. Sie verfⁿgen jeweils ⁿber einen numerischen PrimΣrschlⁿssel namens ╗PK½, der die DatensΣtze eindeutig identifiziert, und ein Feld ╗Wert½, das den eigentlichen Namen der jeweiligen Kategorie enthΣlt. Die Tabelle ╗tblUnterkategorie½ besitzt zusΣtzlich das Feld ╗FK½, ⁿber das Sie die EintrΣge dieser Tabelle mit ╗Kategorie½ in Verbindung bringen. Falls zum Beispiel die Kategorie ╗Handwerker½ den PrimΣrschlⁿssel ╗1½ hat, tragen Sie im Feld ╗FK½ jeder Unterkategorie, die zu ╗Handwerker½ geh÷rt, ebenfalls eine ╗1½ ein.
Erzeugen Sie nun mit Hilfe des Assistenten auf Ihrem Formular ein Kombinationsfeld fⁿr ╗Kategorie½. WΣhlen Sie dabei auf der ersten Seite des Assistenten die Option ╗Das Kombinationsfeld soll die Werte einer Tabelle oder Abfrage entnehmen½. Auf der zweiten Seite markieren Sie die Tabelle ╗tblKategorie½ und wΣhlen anschlie▀end auf der dritten Seite alle Felder aus. Es ist empfehlenswert, auf der vierten Seite die Option ╗Schlⁿsselspalte ausblenden½ zu aktivieren. Geben Sie diesem Kombinationsfeld den Namen ╗cboKategorie½.
Als nΣchstes ben÷tigen Sie eine neue Abfrage namens ╗Auswahl½. Diese Abfrage liefert als Ergebnis alle DatensΣtze der Tabelle ╗tblUnterkategorie½ zurⁿck, deren Feld ╗FK½ mit dem PrimΣrschlⁿssel der im Feld ╗cboKategorie½ getroffenen Auswahl ⁿbereinstimmt. Fⁿgen Sie zu diesem Zweck die Tabelle ╗tblUnterkategorie½ der Abfrage hinzu und ⁿbernehmen Sie alle Felder in den unteren Bereich. ErgΣnzen Sie nun in der Zeile ╗Kriterien½ des Feldes ╗FK½ den Ausdruck ╗[Formulare]![Formularname]! [cboKategorie]½. Vorausgesetzt, Sie nutzen anstelle von ╗[Formularname]½ den tatsΣchlichen Namen Ihres Formulars, bezieht sich diese Bedingung auf die aktuelle Auswahl im Feld ╗cboKategorie½. Da das Feld ╗FK½ ansonsten nicht von Interesse ist, k÷nnen Sie hier das KontrollkΣstchen ╗Anzeigen½ deaktivieren.
Erzeugen Sie nun auf Ihrem Formular das Kombinationsfeld ╗cboUnterkategorie½ wie bereits fⁿr ╗cboKategorie½ beschrieben. WΣhlen Sie diesmal allerdings auf der zweiten Seite des Assistenten die Abfrage ╗Auswahl½ als Datenquelle.
Zuletzt ben÷tigen Sie eine Ereignisprozedur, die Access ausfⁿhrt, sobald Sie ╗cboKategorie½ aktualisieren (unter den ╗Eigenschaften½ von ╗cboKategorie½ der Eintrag ╗Ereignis | Nach Aktualisierung½).

 
Private Sub cboKategorie_ AfterUpdate()
    Me!cboUnterkategorie.Requery
End Sub 


In dieser Prozedur aktualisieren Sie mit der ╗Requery½-Methode von ╗cboUnterkategorie½ die Anzeige des abhΣngigen Kombinationsfeldes und schlie▀en gleichzeitig diese Aufgabe ab. Eine Beispieldatei finden Sie unter CHIP-Code KOMBI.