Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: basti23 am Februar 04, 2016, 16:28:25

Titel: Datum Filter in Formular
Beitrag von: basti23 am Februar 04, 2016, 16:28:25
Hallo

ich bin hier am verzweifeln, ich komm einfach nicht auf den Fehler. Über nen Button soll ein Formular nach Datum gefiltert werden nur gibt Access immer "Syntaxfehler in Datum in Abfrageausdruck '[Date] Between #01.01.2015# and #01.03.2015'.


Private Sub btnActivateFilter_Click()

Dim date1 As Date
Dim date2 As Date


date1 = "1/1/2015"
date2 = "1/3/2015"

Me.Filter = "[Date] Between #" & date1 & "# and #" & date2 & "#"

Me.Form.FilterOn = True

End Sub


wenn ich die Daten direkt eingebe dann gehts ohne Problem


Private Sub btnActivateFilter_Click()

Dim date1 As Date
Dim date2 As Date


date1 = "1/1/2015"
date2 = "1/3/2015"

Me.Filter = "[Date] Between #1/1/2015# and #1/3/2015#"

Me.Form.FilterOn = True

End Sub


danke für eure Hilfe
Titel: Re: Datum Filter in Formular
Beitrag von: el_gomero am Februar 04, 2016, 16:41:43
Hallo,

schau in die faq ...
http://www.donkarl.com?FAQ6.8
Titel: Re: Datum Filter in Formular
Beitrag von: DF6GL am Februar 04, 2016, 17:24:20
Hallo,

und zusätzlich:

"Date" als Feldnamen zu verwenden ist mehr als leichtsinnig...
Titel: Re: Datum Filter in Formular
Beitrag von: basti23 am Februar 05, 2016, 08:19:47
Hi

erstmal danke für die Antworten!
Aber ich komm noch immer nicht richtig weiter, also Zielsetzung ist dass 2 Datumswerte über Variablen gesetzt werden und dann über Me.Filter eine Spalte (die das Format Datum/Urzeit hat) filtert:

Me.Filter = "[In Out] Between #" & date1 & "# and #" & date2 & "#"

Das Problem scheint mir an den 2 Variablen zu liegen denke ich.
Den Artikel "6.8 Datum an SQL-String übergeben" hab ich mir durchgelesen, werd aber nicht wirklich schlau daraus, ich will ja nicht einen Spaltenwert als Kriterium verwenden (sondern eben Variablen)

Danke für die hilfe!
Titel: Re: Datum Filter in Formular
Beitrag von: DF6GL am Februar 05, 2016, 08:38:11
Hallo,

lies nochmal genau donkarl 6.8 FAQ    durch.....

Deine Zielsetzung ist ja klar und die Lösung beschreibt der Link.

Wo steht da was von "Spaltenwert als Kriterium"?  Da steht : "Wert eines Datumsfeldes als Kriterium verwenden".

Und "Wert eines Datumsfeldes"    ==  "Wert einer DatumsVariablen"

Wenn solche Felder/Variablen in VBA mit einem String verkettet werden, wird intern der Wert der Datumsvariablen zunächst zu einem String mit deutscher Datums-Formatierung (genauer: entsprechend der Regionseinstellungen) konvertiert. Diese Formatierung entspricht aber nicht der Anforderung an die Formatierung in einer SQL- Where-Condition (was der "Filter"-String ja bedeutet), die USA- oder ISO-Format aufweisen muss.(Format nicht verwechseln mit Datentyp!)

Die Ausgabe des Filterstrings in das Direktfenster könnte der Überprüfung dienen..

Me.Filter = "[In Out] Between " & Format(date1, "\#yyyy\-mm\-dd\#") & " and " & Format(date2, "\#yyyy\-mm\-dd\#")