ich möchte Aktivitäten mit einer Benutzerabfrage filtern die alle Datensätze ab einem Datum bis incl. einem Datum enthalten.
Leider muss dazu immer ein Tag dazu gezält werden weil der folgende Ausdruck nur die Daten bis incl 06.07.2022 filtert:
“Activities”.“DateTime” < CONVERT(datetime, ‘«AskString$("Dienstleistungen bis incl. Datum ",“07.07.2022”)»’, 104)
Frage: Wie muss der Filterausdruck abgeändert werden, damit er alle Datensätze incl. des angegebenen Datum filtert?
Ich habe schon herrumprobiert mit (AddDay(AskString$,+1) aber hat nicht funktioniert.
@Frank_Wietzel Ich glaube das Problem ist, dass das eingegebene Datum implizit „00:00“ als Uhrzeit bekommt und damit der Vergleich für alle Treffer dieses Stichtages (aber mit z.B. „9:00“ Uhrzeitanteil) dann nicht „treffen“, weil tt.mm.jjjj 9:00 eben nicht <= tt.mm.jjjj 0:00 ist. Der Filter Allgemein warnt dies auch entsprechend:
“Activities”.“DateTime” < DATEADD(d, 1, CONVERT(datetime, ‘«AskString$("Dienstleistungen bis incl. Datum",“07.07.2022”)»’, 104))
(DATEADD addiert 1 Tag zum eingegebenen Wert dazu)
Wenn man es im Filter-Assistent interaktiv zusammenklickt, kümmert* sich der Assistent hinter den Kulissen automatisch darum, wenn bei der Benutzereingabe für den Vergleichswert keine Uhrzeit angegeben wurde. Daher möchte ich an dieser Stelle nochmal Werbung für den Filter-Assistenten machen.
*) intern macht der in diesem Fall folgende Abfrage daraus: CONVERT(date, "Activities"."DateTime") <= CONVERT(date, '09.11.2022 ', 104)
(Es werden also beide Seiten auf date konvertiert, damit der Uhrzeitanteil irrelevant wird - können Sie oben natürlich auch machen.)
Das, was bei Filter Allgemein als „Bedingung“ in dem mehrzeiligen Eingabefeld landet, ist letztlich ein SQL-Ausdruck (where-Statement), der dann bei der Ausführung vom Datenbankserver interpretiert wird. (1)
Vorher werden noch die Teile, die in „«“/„»“ eingerahmt sind, durch combit CRM als Formel interpretiert und „aufgelöst“, bevor es dann an den Datenbankserver als Abfrage geschickt wird. (2)
WAS?!! Den gibt es seit Version 8, das sind über 7 Jahre. Okay…
Disclaimer: @Ronald_Kissling Wenn jemand von combit (inkl. mir) hier im Forum antwortet, bezieht sich das immer immer immer auf die aktuelle Produktversion, die alle unsere Kund:innen im Zuge eines aktiven Wartungsvertrages immer automatisch inklusive haben. Produktversionsspezifische Unterschiede können wir hier im Forum nicht handeln, daher sag ich das lieber jetzt sicherheitshalber zur „Vorwarnung“, falls Sie bei irgendeinem Verweis auf ein Feature oder Menüpunkt nur „Bahnhof“ verstehen.
Ich teste das jetzt mal nicht ich kann mich also irren. Aber ich glaube das die Methode mit dateadd() auf das Kriterium bevorzugt werden sollte. Die Variante die Spalte ebenfalls zu DATE zu konvertieren könnte dafür sorgen das Indexe nicht funktionieren. Bei großen Datenmengen wird das also langsamer.