Hallo ihr Lieben,
folgendes Problem:
Ich habe ein Endlosformular, in welchem Termine angezeigt werden. Jeder Datensatz enthält ein Feld "datTermin" und ein Feld "datNeuerTermin". Das Datum für den neuen Termin wird zum Datensatz hinzugefügt, wenn in einer Dienstberatung festgestellt wird, dass der ursprüngliche Termin nicht eingehalten werden kann. Außerdem gibt es ein Feld "blnDauerkontrolle", welches eine dauerhafte Kontrolle, also keinen festen Termin, festlegt.
Im Endlosformular soll nun nach bestimmten Kriterien gefiltert werden. Dabei gibt es die Textbox "txtFilter", in welche ein Datum eingetragen werden kann und die Checkbox "chkDauerkontrolle". Ist das Textfeld leer wird nur über die Checkbox entschieden, ob die Termine mit blnDauerkontrolle=True angezeigt werden oder nicht. Füllt man die Textbox "txtFilter" mit dem Datum der nächsten Dienstberatung aus, so sollen alle Termine angezeigt werden, welche bis zu diesem Datum erfüllt sein sollten. Über die Checkbox kann dann wieder entschieden werden, ob die Termine mit Dauerkontrolle zusätzlich angezeigt werden sollen, oder nicht. Das klappt auch soweit. Nun aber zu meinem Problem:
Ist ein neuer Termin im Datensatz vorhanden, so soll stattdessen nach dem neuen Termin gefiltert werden. Das habe ich mit einer If-Funktion probiert. Das Problem ist nun, dass wenn der ersten Datensatz einen neuen Termin enthält, nur nach neuen Terminen gefiltert wird, obwohl die Datensätze die nur einen Termin haben trotzdem in den Zeitraum passen. Gibt es da eine Lösung um alle Datensätze im angegebenen Zeitraum anzuzeigen?
Ich hab euch hier mal meinen Code hingepackt, der beim Klicken auf den Button Filter ausgeführt wird:
strDatum = Format(txtFilter, "\#yyyy\-mm\-dd\#")
If IsDate(txtFilter) = False Then
If chkDauerkontrolle = False Then
Me.Filter = "[blnDauerkontrolle]= False"
Me.FilterOn = True
Else
Me.FilterOn = False
End If
Else
If IsDate(datNeuerTermin) = False Then
If chkDauerkontrolle = True Then
Me.Filter = "[datTermin] BETWEEN #2020-01-01# AND " & strDatum & " OR [blnDauerkontrolle]= True"
Me.FilterOn = True
Forms!frmDatenliste.OrderBy = "blnDauerkontrolle"
Else
Me.Filter = "[datTermin] BETWEEN #2020-01-01# AND " & strDatum & " AND [blnDauerkontrolle]= False"
Me.FilterOn = True
End If
Else
If chkDauerkontrolle = True Then
Me.Filter = "[datNeuerTermin] BETWEEN #2020-01-01# AND " & strDatum & " OR [blnDauerkontrolle]= True"
Me.FilterOn = True
Forms!frmDatenliste.OrderBy = "blnDauerkontrolle"
Else
Me.Filter = "[datNeuerTermin] BETWEEN #2020-01-01# AND " & strDatum & " AND [blnDauerkontrolle]= False"
Me.FilterOn = True
End If
End If
End If
Vielen Dank schon einmal im Voraus!
Hallo,
mehrere/verschiedene Filter sind nicht zielführend.
Du kannst nur einen Filter erstellen. In diesen musst du deine Bedingungen einarbeiten.
Dein "if" kannst du dabei per "iif" in die Bedingung einarbeiten.
Alternativ könntest du z.B aus "datTermin"und "datNeuerTermin" ein neues Abfragefeld erstellen und nach diesem filtern.
Das macht das Ganze etwas übersichtlicher.
Hi Steffen,
mit dem Abfragefeld hat es funktioniert. Vielen Dank!