Januar 20, 2021, 13:23:20

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Filter für jeden Datensatz im Endlosformular einzeln anwenden?

Begonnen von Oleeiy, Januar 04, 2021, 09:08:37

⏪ vorheriges - nächstes ⏩

Oleeiy

Januar 04, 2021, 09:08:37 Letzte Bearbeitung: Januar 05, 2021, 08:04:36 von Oleeiy
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!
Gruß Ole

steffen0815

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.
Gruß Steffen

Oleeiy

Hi Steffen,

mit dem Abfragefeld hat es funktioniert. Vielen Dank!
Gruß Ole