Beim Einschränken der Auswahlliste einer Combobox in VBA mit dem Befehl
Me!ComboboxName.Rowsource = "SELECT ... "
tritt bei mir das Problem auf, dass gespeicherte Werte in anderen Zeilen des Listenformulars kurzzeitig aus der Anzeige verschwinden.
Im Beispiel habe ich eine Tabelle "Sportart" definiert mit Sportarten wie Fußball, Handball etc. und einem Primärschlüssel "SportartID". In einer weiteren Tabelle "Liga" sind verschiedene Ligen zu der Sportart gespeichert. Neben der LigaID als Primärschlüssel
ist u.a. die Möglichkeit vorhanden zu einer Liga die übergeordnete "Aufstiegsliga" anzugeben. Dieses erfolgt durch eine Selbstreferenz auf die jeweilige LigaID.
In einem Formular werden jetzt die Sportarten und mit Hilfe eines Unterformulars die dazu gehörigen Ligen verwaltet. Das Feld für die Aufstiegsliga ist mit einem Nachschlager verknüpft, der die Namen der Ligen statt der LigaIDs zur Auswahl bereitstellt.
Soweit funktioniert alles!
Der Nachschlager des Kombinationsfeldes bietet in dieser Version alle Ligen zur Auswahl an, also auch den Aufstieg in dieselbe Liga und den Aufstieg in die Liga einer anderen Sportart, z.B. von einer Fußballliga in eine Handballliga. Dieses Auswahl ist unsinnig!
Daher habe ich durch eine kleine VBA-Prozedur die Auswahl eingeschränkt.
Private Sub AufstiegID_Enter()
Me!AufstiegID.RowSource = "SELECT LigaID, Liga FROM Liga WHERE SportartID = " & _
Forms!Sportart!SportartID & " AND LigaID <> " & Nz(Me!LigaID, 0) & " ORDER BY Liga"
Debug.Print Me!AufstiegID.RowSource
End Sub
Das funktioniert soweit, dass in der Auswahl nur Ligen mit derselben Sportart wie im Hauptformular angeboten werden und diejeweilige Liga selbst ausgeblendet wird. Das Problem ist, dass der jeweilige SQL-Befehl auch in anderen Zeilen des Unterformulars Wirkung
zeigt und einzelne Werte wie von Geisterhand verschwinden und wieder auftauchen. Klickt man z.B. auf das Aufstiegsfeld der 1. Bundesliga verschwindet die Anzeige der 1. Bundesliga im Aufstiegsfeld der 2. Bundesliga. Klickt man nun auf das Aufstiegsfeld der
2. Bundesliga, dann wird der Wert wieder angezeigt, aber es verschwindet die Anzeige der 2. Bundesliga im Aufstiegsfeld der 3. Bundesliga usw.
Vielen Dank für einen Tipp.