Servus miteinander,
ich habe folgendes Problem.
Ich filtere Daten mit 2 Kombinationsfelder in einem Endlosformular.
Kombi Hersteller:
On Error GoTo myError
Me!cmb_Modell.Requery
Me.RecordSource = " SELECT tbl_Kfz.*, tbl_Hersteller.Marke_ID" _
& " FROM (tbl_Hersteller LEFT JOIN tbl_Modell ON tbl_Hersteller.Marke_ID = tbl_Modell.Marke_ID) LEFT JOIN tbl_Kfz ON tbl_Modell.Modell_ID = tbl_Kfz.Modell_ID" _
& " WHERE (((tbl_Hersteller.Marke_ID)=Forms![frm_Kfz3]![cmb_Hersteller]));"
Me!cmb_Modell.SetFocus
myErrExit:
Exit Sub
myError:
MsgBox Err.Number & " " & Err.Description
Resume myErrExit
und Kombi Modell:
On Error GoTo myError
Me.RecordSource = "SELECT * FROM tbl_Kfz WHERE ([Modell_ID] = Forms![frm_Kfz3]![cmb_Modell])"
myErrExit:
Exit Sub
myError:
MsgBox Err.Number & " " & Err.Description
Resume myErrExit
Das funktioniert soweit auch. Nur wenn ich die Kombis leere zeigt es mir keine Datensätze mehr an.
weis jemand wie ich das Problem lösen kann?
Vielen Dank
Hallo!
Welche Datensätze sollten bei folgendem SQL-Ausdruck angezeigt werden:
select * from tbl_Kfz WHERE ([Modell_ID] = Null)
Gruß
Josef
Wenn ich das Formular öffne zeigt es mir ja alle Datensätze der Tabelle KFZ an.
Nach dem Filtern durch die Kombis würde ich gerne die möglichkeit haben , wieder alle Datesätze anzuzeigen.
Ich habe mal die Beispieldatenbank hochgeladen. es betrifft die Nr.2 Auswahl nach 2 abhängigen Kombifelder
Hallo!
Beim Starten ist als Datenquelle des Formular auch folgendes eingestellt: tbl_Kfz
Tipp: stelle nicht die Datenquelle um, sondern nutze die Filter-Eigenschaft des Formulars.
Prinzip (nur Luftcode, daher nich ungeprüft übernehmen):
Private Sub cmb_Hersteller_AfterUpdate()
With Me!cmb_Modell
.Requery ' Datenherkunft für Listenfeld "Modell" neu einlesen
' !!! ... darauf achten, was passiert, wenn da bereits ein Wert ausgewählt ist =>
if Nz(.Value, 0) <> val(Nz(.column(0), 0)) then
.Value = NULL
end if
end with
RefreshFilter
end Sub
Private Sub cmb_Modell_AfterUpdate()
RefreshFilter
End Sub
private sub RefreshFilter()
dim FilterString as String
'Anm. hier passt if/elseif, da das Modell den Hersteller einschließt, somit müssen nicht beide gefiltert werden
if me.cmb_Modell.Value <> 0 then
FilterString = "Modell_ID=" & Me.cmb_Modell.value
elseif me.cmb_Hersteller.Value <> 0 then
FilterString = "Modell_ID in (select Modell_ID from tbl_Modell where Marke_ID=" & Me.cmb_Hersteller.value & ")"
end if
me.Filter = FilterString
me.FIlterOn = (len(FilterString) > 0)
end Sub
Gruß
Josef
Super. Vielen Dank. Es funktioniert