| 

.NET C# Java Javascript Exception

2
Hallo zusammen,

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! :)
News:
05.02.2011
Marinho 31 1 3
6 Antworten
2
Bei Änderung der Auwahl von Dropdownliste "Kategorie", die Dropdownliste "Bereich" leeren und über neue Abfrage füllen

etwa
SELECT Bereich FROM Kategorie WHERE Kategorie=<ausgewählte Kategorie>
05.02.2011
Joachim 3,1k 4 9
2
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
06.02.2011
tboerner 509 8
1
Hallo,
das korrekte Ereignis lautet nicht Change sondern AfterUpdate

also:

Private Sub KategorieBox_AfterUpdate()
Obstbox.RowSource = "SELECT ... "
End Sub

Und die KategorieBox RowSource (Datensatzherkunft) stellst Du ebenfalls mit einer Select-Anweisung ein: SELECT KategorieFeld FROM Tabelle1

Ich hoffe, das hilft dir weiter.
Gruss Mary.H
08.02.2011
Mary.H 11 1
1
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
08.02.2011
goholger 21 1
0
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


Bei der KategorieBox ist nichts hinterlegt!?

Über weitere Hilfe würde ich mich sehr freuen! :)
06.02.2011
Marinho 31 1 3
0
Mit der Mischung hat es jetzt geklappt, ich danke euch bis hierher, stelle mir jetzt nur noch eine Frage, das dann im anderen Thema. :)

Der Lösungsweg:

1. Eine Ereignisprodezur bei der Kategoriebox angelegen:
Private Sub field_Change()
Me.obstBox.Requery
End Sub

2. Datensatzherkunft der Obstbox:
SELECT obstBox FROM tabelle WHERE Kategorie=Forms!meinForm!kategorieBox;
10.02.2011
Marinho 31 1 3

Stelle deine Access-Frage jetzt!