Hello,
Ich habe jetzt nicht die Zeit darüber nachzudenken, aber warum nicht auf die "n:m" mit geeigneter WHERE-Klausel gehen und dann auf die "Kategorie" JOINen?
bin da voll bei dir - WENN das nicht Access wäre, das eigentlich für alles eine extrem komfortable Click-and-Go-Lösung hat.
Man kann ein ganzes Formular an eine Tabelle oder eine Abfrage binden. Merke: 1 Formular, 1 Quelle. Access steuert dann automatisch das Formular, d.h. zeigt je nach Ansicht alle Datensätze als Liste an, bietet vor/zurück-Schaltflächen o.ä.
Mein Ansatz, bis vor 5 Minuten war: Lade im Unterformular auf Vorrat alle Sätze die in Frage kommen (das ist der Left Join), und sobald du im Hauptformular weißt zu welchem Stammdatensatz du eigentlich was suchst, filtere. Und das scheitert halt daran, dass dieser Filter NACH dem Join und nicht IN dem Join angewendet wird.
Der Vorteil dieser Lösung wäre, dass das Subformular als solches an beliebiger Stelle genutzt werden könnte.
Das deutet dann wohl doch eher auf "Script-Logik" bzw. einer Kombination aus VBA-Logik und SQLs hin.
Hehe, na ja, hab jetzt einen anderen Ansatz, der allerdings eine fixe Verbindung zwischen Haupt- und Subformular herstellt:
man hänge an den LEFT JOIN einfach die Kriterien mit dran, also etwa
... WHERE id_kategorie IS NULL OR id_kategorie = Forms!Stammdaten!id
Das erzielt somit mal das gewünschte Ergebnis, auch wenn es mal wieder eine Lösung ist, die ich nicht schön finde. Da die Anwendung aber vorrausichtlich niemals Wartung benötigt, kann ich damit leben.
MfG
Rouven
-------------------
Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist -- Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1