Hallo!
Als absoluter rookie (!!) habe ich folgendes Problem zu meistern: In einem UFo habe ich drei abhängige Kombi-felder (cboAGOrganisation-->cboAGAbteilung-->cboAGUnterabteilung), deren Werte in je einer Tabelle stehen. In cboAGOrganisation werden alle Organisationen zur Auswahl aus der entsprechenden Tabelle angezeigt. Nach Auswahl werden in cboAGAbteilung nur jene Abteilungen aus einer Tabelle angezeigt, die der ausgewählten Organisation zugehören. Das habe ich mittels folgender Select-Anweisung in den Eigenschaften-Datensatzherkunft des cbo geschafft:
SELECT [tbl_AGAbteilung].[ID_AGAbteilung], [tbl_AGAbteilung].[txt_Name], [tbl_AGAbteilung].[ID_AGOrganisation] FROM tbl_AGAbteilung WHERE ID_AGOrganisation=cboAGOrganisation;
Mit dem dritten cbo (cboAGUnterabteilung) bin ich gleich verfahren, also:
SELECT [tbl_AGUnterabteilung].[ID_AGUnterabteilung], [tbl_AGUnterabteilung].[txt_Name], [tbl_AGUnterabteilung].[ID_AGAbteilung], [tbl_AGUnterabteilung].[ID_AGOrganisation] FROM tbl_AGUnterabteilung WHERE ID_AGAbteilung=cboAGAbteilung;
Damit die Einträge in den cbo nun je nach Auswahl aktualisiert werden, habe ich zunächst folgenden Code in die Ereignisprozedur "nach Aktualisierung" von cboAGOrganisation Code eingefügt:
Private Sub cboAGOrganisation_AfterUpdate()
cboAGAbteilung.Requery End Sub
In die Ereignisprozedur "nach Aktualisierung" von cboAGAbteilung habe ich folgenden Code eingefügt:
Private Sub cboAGAbteilung_AfterUpdate()
cboAGUnterabteilung.Requery
End Sub
Nun verhält es sich folgendermaßen: Wenn ich cboAGOrganisation aktualisiere, dann aktualisiert sich cboAGAbteilung, aber nicht auch cboAGUnterabteilung. Wie schaffe ich es, dass nach Aktualisierung von cboAGOrganisation BEIDE unterstehenden cbos aktualisiert werden?
Danke für eure Anregungen!
Hallo,
nach Aktualisierung des 1. Kombifeldes sollten Kombi-2 und Kombi-3 eigentlich leer sein bzw. geleert werden. Erst nach Eingabe in Kombi-2 aktualisiert sich die Datensatzherkunft in Kombi-3, das sollte doch passen.
Hallo,
Zitatdann aktualisiert sich cboAGAbteilung, aber nicht auch cboAGUnterabteilung.
Welchen Sinn hätte das denn? Es wurde ja noch keine AGAbteilung ausgewählt...
Eine von mehreren "Lösungen" wäre, das 3. Kombi erst nach der Auswahl im 2. Kombi auf sichtbar umzuschalten.
Hallo und danke für die Antwort!
Prinzipiell passt das auch. Aber wenn ich etwa Kombi 1 auswähle, dann dazu Kombi 2 und Kombi 3 auswähle und DANN nochmal Kombi 1 ändere, dann aktualisiert sich zwar Kombi 2 aufgrund der Auswahl in Kombi 1, aber in Kombi 3 bleibt der vorherige Eintrag, der nun nicht mehr zur Auswahl in Kombi 1 passt. Daher sollt bei Änderung des Kombi 1 auch immer Kombi 3 geleert werden.
Danke nochmal für die Antworten!
Hallo,
versuch mal:
Private Sub cboAGOrganisation_AfterUpdate()
cboAGAbteilung.Requery
cboAGUnterabteilung.Requery
End Sub
oder so:Private Sub cboAGOrganisation_AfterUpdate()
Me.cboAGAbteilung.Requery
Me.cboAGUnterabteilung = Null
End Sub
Zusätzlich:
Die Auswahl in Kombi-3 ohne vorherige Auswahl in Kombi-2 sollte unterbunden werden.
Entsprechendes gilt für Kombi-2.
@DF6GL: das war mein erster Ansatz, funktioniert allerdings nicht.
@MaggieMay: damit wird zwar die Anzeige im Kombi 3 geleert, im Dropdown bleiben aber die "alten" Wahlmöglichkeiten.
ZitatDie Auswahl in Kombi-3 ohne vorherige Auswahl in Kombi-2 sollte unterbunden werden.
Wie kann ich das bewerkstelligen?
LG
Zitatim Dropdown bleiben aber die "alten" Wahlmöglichkeiten.
Das ist richtig, aber das siehst du ja nicht, und nach Auswahl in Kombi-2 wird es aktualisiert.
ZitatWie kann ich das bewerkstelligen?
Bspw. so:
Private Sub cboAGUnterabteilung_BeforeUpdate(Cancel As Integer)
If IsNull(Me.cboAGAbteilung) Then
MsgBox "Bitte zuerst die Abteilung auswählen!"
Cancel = True
Me.cboAGAbteilung.SetFocus
End If
End Sub
Hi,
noch ein bisschen Schmalz:
SELECT [tbl_AGUnterabteilung].[ID_AGUnterabteilung], [tbl_AGUnterabteilung].[txt_Name], [tbl_AGUnterabteilung].[ID_AGAbteilung], [tbl_AGUnterabteilung].[ID_AGOrganisation] FROM tbl_AGUnterabteilung WHERE ID_AGAbteilung=nz([cboAGAbteilung],0)
bei Deinem "ersten Ansatz".
Vernünftige Lösungen wären, das 2. und 3. Kombi immer erst nach Auswahl des vorangegangenen auf sichtbar zu setzen oder die Datensatzherkunft des/der folgenden Kombis jeweils in den Afterupdate-Prozeduren mit einem passenden SQL-String zu versorgen.
Liebe MaggieMay, lieber Franz,
danke für eure Tipps, die mir sehr weitergeholfen haben!
Alles Gute,
castor