Hallo zusammen,
habe bereits ein Formular ,,frm_OEbene1" mit einem UF ,,frm_OEbene11" im dem sich wiederum ein UF ,,frm_OEbene111" befindet. Das Formular verwende ich um Dateien wie Word, Excel, Powerpoint-Dokumente (vermeindlich) sortiert abzulegen.
Die Formulare greifen auf die dazugehörigen Tabellen ,,tab_OEbene1", ,,tab_OEbene11" und ,,tab_OEbene111" zu. In jedem Formular befindet sich noch ein entsprechendes Listenfeld mit der jeweiligen Datenherkunft ,,tab_OEeben...). Es gibt auch diverse Buttons nächster bzw. vorheriger Datensatz.
Wenn ich mich mit den Buttons durch das Formular klicke wird die nachfolgende Ebene entsprechend aktualisiert bzw. zeigt die dazugehörigen Datensätze. Wenn ich in den Listenfeldern einen Doppelklick auf zusammengehörige Datensätze mache, wird der entsprechende DS im entsprechenden Feld (daneben) gezeigt.
Da in den Listenfeldern immer alle DS der entsprechenden Tabelle angezeigt werden, wird das mit der Zeit ziemlich unübersichtlich.
Nun hätte ich gerne die Listenfelder der Ebene2 und Ebene3 so gefiltert, daß immer nur die dazugehörigen Datensätze zum DS des übergeordneten Listenfeldes gezeigt werden.
Um das besser und hoffentlich verständlicher darzustellen habe ich eine Testdatei mit reduzierter Datensatzmenge hinzugefügt.
z.B.
 ,,Liste26"
2 (doppelklicken)
Anzeigt werden soll in ,,Liste37"
21_
22_
,,Liste37"
22_ (doppelklicken)
Anzeigt werden soll in ,,Liste32"
221_
222_
Habe zwar schon einige Forenbeiträge zum Thema ,,RowSource" gelesen, habe aber noch kein Beispiel das zu meiner Anforderung paßt gefunden.
Wie könnte man sowas umsetzen? Hätte jemand ein Beispiel?
Gruss
mad
			
			
			
				Hallo Zusammen,
habe mir mal ein Abfrage zum Thema erstellt um abzufragen ob die richtige Filterung zwischen OEbene1 und OEbene11
funktioniert.
Abfrage-Code:
SELECT tab_OEbene11.IDEbene11, tab_OEbene11.OrdnerNr11, tab_OEbene11.OrdnerNeuNr11
FROM tab_OEbene11
WHERE (((tab_OEbene11.OrdnerNr11)=[Me]![IDEbene1]));
Wenn ich die Abfrage öffne kommt das Eingabefenster, dort gebe ich z.B. eine "2" ein und die Abfrage filtert richtig:
Es werden die richtigen DS "21 u. 22" angezeigt.
Nun habe ich die SELECT-Anweisung von oben wie folgt versucht ich das Ereignis "bei Doppelklick" auf einen Eintrag des Listenfeldes "Liste26" einzubinden.
Private Sub Liste26_DblClick(Cancel As Integer)
    Me.Recordset.FindFirst "IDEbene1 = " & Me!Liste26
    Forms!frm_OEbene1!frm_OEbene11!Liste37.RowSource = "SELECT IDEbene11, OrdnerNr11, OrdnerNeuNr11 FROM tab_OEbene11 Where OrdnerNr11 = Me!IDEbene1"
    Forms!frm_OEbene1!frm_OEbene11!Liste37.Requery
End Sub
Wenn ich jetzt einen DblClick in der Liste26 tätige werde ich zur eingabe eines Parameterwertes aufgefordert. Wenn ich dort die Zahl eingebe die ich oben DblClick habe, wird die Liste37 zwar gefiltert aber wird dann zweimal die "2" angezeigt und nicht wie es sein sollte die "21" und "22".
Wo liegen denn meine Fehler?
Gruss
mad
			
			
			
				Hallo mad,
1. schaust du hier (https://www.donkarl.com?FAQ4.2)
wegen
ZitatForms!frm_OEbene1.Form.frm_OEbene11!Liste37.RowSource
wobei "frm_OEbene11" der Name des UFo-Controls sein muss, nicht der Formname, - s. Link
2. hier (https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/ampersand-operator)
wegen
Zitat" ... WHERE OrdnerNr11 = " & Me!IDEbene1
gruss ekkehard
			
				Habe jetzt noch die richtigen Spalten in den Listenfeldern sichtbar geschalten, dann funktionierts perfekt.
Herzlichen Dank
mad