Problem mit "DoCmd.ApplyFilter"

Trebjun

Grünschnabel
Hallo,

folgende Situation:

ich habe eine Access Anwendung, in der die Daten aus einer SQL Datenbank kommen.
Unter anderem wird in einem Feld das Datum gespeichert. Das Feld bzw. die Felder sind vom Typ datetime.
Nun hatte ich vor in der Anwendung einen Filter einzubauen in Form eines Textfeldes, womit man sich nur alle Einträge eines bestimmten Datums anzeigen lassen kann. An und für sich keine grosse Sache. Nun habe ich aber das Problem, dass durch das Format datetime auch die Zeit abgefragt wird. Da schon mehere Filter in der Anwendung bestehen, die mit "DoCmd.ApplyFilter" gefiltert wurden, muss ich auch diese Funktion verwenden.

Jetzt das Problem:
Durch das Format datetime wird ja auch immer die Zeit gespeichert des Eintrages gespeichert. Wenn ich nun nach dem Datum suche, was ich in dem Textfeld eingegeben habe, findet er keine Einträge, weil ich dazu nicht die Zeit eingeben habe. In der Datenbank steht zum Beispiel:
18.08.2004 14:12:43
Gebe ich in dem Textfeld das Datum mit der korrekten Zeit an, findet er den Eintrag. Nun kann ich aber nicht vom Anwender vorraussetzen, dass er die Zeit zum Datum weiss. Wie kann ich also nach dem Datum filtern, ohne dass die Zeit eine Rolle spielt? Eine Lösung war folgende:

Receivedate > CONVERT(DATETIME, '" & mydate & " 00:00:00', 104)) and (Receivedate < CONVERT(DATETIME, '" & mydate & " 23:59:59', 104))"

mydate ist das gesuchte Datum aus dem Textfeld. Diese Abfrage funktioniert auch auf dem SQL Server. Es werden alle Einträge des gesuchten Datums zw. 00:00:00 und 23:59:59 angezeigt. Das Problem ist das die "DoCmd.ApplyFilter" Funktion diese Suche nicht umsetzen kann. Anscheinend kennt er die CONVERT Funktion nicht.
Hat jemand eine Idee wie man das lösen kann?

Bin für jeden Tipp dankbar!

Gruss Trebjun
 
In AccessVba musst du es über die Format funktion lösen

bsp :
Code:
Receivedate > Format(mydate,"DD:MM:YYYY HH:NN:SS') and (Receivedate < Format(Dateadd("d",1,mydate),"DD:MM:YYYY HH:NN:SS')

grüsse bb

PS: ich habe die Funktion Dateadd benutzt da man so ein Zeitfenster von genau 24 stunden hat (Du hast nur >< also wenn um Punkt etwas passiert wirst du den nie sehen)
 
Hallo brainbyte,

vielen Dank für Deine Antwort! Hab's gerade ausprobiert. Klappt super! Allerdings musste ich das Datumsformat ändern: YYYY-MM-DD.
Also vielen Dank nochmal!

Gruss Trebjun
 
gern geschehen das Format kommt auf die einstellung vom SQL-Server an !

Grüsse bb

PS: bitte als erledigt setzen
 

Neue Beiträge

Zurück