in einem Formular sind 2 Dropdownlisten, deren Listeninhalte über 2 Abfragen gefüllt werden. Ursprungsquelle ist eine Tabelle nach folgendem Muster:
Bereich | Kategorie Äpfel | A Birnen | B Zitronen | A Bananen | C Kiwi | C Orangen | A
Wenn der Benutzer nun Kategorie "A" auwählt, soll er in der zweiten Dropdownliste nur noch aus "Äpfel", "Zitronen" und "Orangen" auswählen können. Da beide Dropdwnlisten im gleichen Formualr sind, muss also eine Liveänderung erfolgen. Wie lässt sich das am besten realisieren?
Ich bin über jede Hilfe dankbar und würde mich freuen, wenn ihr auch meine weitere Frage zu Access 2007 beachtet! :)
Also zwei ComboBoxen ObstBox und KategorieBox. ObstBox enthält die Daten mit folgender Abfrage (Datensatzherkunft)
SELECT Tabelle1.ID, Tabelle1.NameFeld, Tabelle1.KategorieFeld FROM Tabelle1;
Dann lädt das folgende Ereignisroutine des Events "Bei Änderung" die Daten in KategorieBox
Private Sub ObstBox_Change() KategorieBox.RowSource = "SELECT [Tabelle1].[ID], [Tabelle1].[KategorieFeld] FROM [Tabelle1] Where [Tabelle1].[KategorieFeld]='" & ObstBox.Column(2) & "'" End Sub
normalerweise reicht in der zweiten Combobox ein Verweis auf die erste:
z.B. so:
SELECT Bereich FROM Kategorie WHERE Kategorie=Forms!MeinFormular!cmbKategorieAuswahl
nach braucht man im cmbKategorieAuswahl_AfterUpdate nur ein Me.cmbBereichAuswahl.Requery machen und gut ist
so lange einspaltige Combos sind ist es damit erledigt, wenn nicht wird spannender:
in einem Endlosformular geht das im Detailbereich dann nicht so schön, weil dann die Übersetzung für andere Datensätze mit anderen Kategorien wie der soeben ausgewählten nicht mehr funktioniert
Vielen Dank für eure Unterstützung, aber leider klappt das noch nicht so recht. Ich habe mir erlaubt, jeweils die Obst- und Kategoriebox miteinander zu vertauschen, da sich die ObstBox ja ändern soll, wenn eine andere Kategorie gewählt wurde - oder habe ich einen Denkfehler?
Also aktueller Stand: Datensatzherkunft KategorieBox: "" Ereignisprozedur KategorieBox:
Private Sub KategorieBox_Change() ObstBox.RowSource = "SELECT [Tabelle1].[ObstFeld] FROM [Tabelle1] Where [Tabelle1] [ObstFeld]='" & KategorieBox.Column(2) & "'" End Sub