Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: smily68 am August 13, 2013, 10:02:25

Titel: Mit SQL Datumsvergleich
Beitrag von: smily68 am August 13, 2013, 10:02:25
Hallo

Ich will mit einem SQL Befehl eine Selektion in einer Abfrage machen. Doch ich finde nicht heraus wie ich die beiden Daten konvertieren muss, damit ich diese vergleichen kann.

Ich habe folgendes probiert: 

      strSQL = "Select * FROM qryAusleihPos Where ausleihPos_RetourDatSoll <= " & Me.txtBisDatum
      strSQL = "Select * FROM qryAusleihPos Where Convert (char(10), ausleihPos_RetourDatSoll, 104) <= '" & Me.txtBisDatum & "' "

Die zweite Variante habe ich meinem Accesshanbuch gefunden. Dort schreibt man, dass man die Felder am besten in Textfelder umwandelt. Doch dies funktioniert auch nicht richtig.

Kann mir jemand sagen, wie das Datum richtig formatieren muss, um es zu vergleichen

Gruss Daniel

Titel: Re: Mit SQL Datumsvergleich
Beitrag von: DF6GL am August 13, 2013, 10:30:23
Hallo,

bestimmt schn 1000 Mal hier im Forum beschrieben...

Es ist das ISO- oder USA-Format im Kriterium erforderlich.


strSQL = "Select * FROM qryAusleihPos Where ausleihPos_RetourDatSoll <= " & Format(nz(Me!txtBisDatum ,Date), "\#yyyy-mm-dd\#")
Titel: Re: Mit SQL Datumsvergleich
Beitrag von: Chris_Kaa am September 28, 2017, 09:42:16
Danke Franz, das hat mir geholfen:
Format(nz(Me!txtBisDatum ,Date), "\#yyyy-mm-dd\#")
bin leider erst nach 30 Minuten Suche auf diesen Thread gestossen... :'(
Titel: Re: Mit SQL Datumsvergleich
Beitrag von: Beaker s.a. am September 28, 2017, 16:20:55
Hallo Chris,
Und da du das sicher öfter brauchen wirst, schreibe dir dazu eine Function
in ein allgemeines Modul.
Public Function SQLDatum(ByVal MeinDatum As Date) As String

    SQLDatum = Format$(MeinDatum, "\#yyyy\-mm\-dd\#")

End Function

Das kannst du dann überall verwenden, auch in Abfragen; - spart 'ne Menge Tipperei  :D
... Where ausleihPos_RetourDatSoll <= " & SQLDatum(Nz(Me!txtBisDatum, Date)
gruss ekkehard
Titel: Re: Mit SQL Datumsvergleich
Beitrag von: Lachtaube am September 28, 2017, 17:11:25
... und ganz dumm kommt es dann, wenn der Parameterwert einmal Null ist.

Deswegen bevorzuge ich die Anwendung echter Parameterabfragen gegenüber dem Zusammenkleistern von Textsegmenten oder verwende zumindest die Access beiliegende Funktion BuildCriteria*, die auch Null-Werte entsprechend behandelt.
d = VBA.Date() 

?BuildCriteria("a", dbDate, Nz(d, "Null"))
a=#9/28/2017#

d = Null

?BuildCriteria("a", dbDate, Nz(d, "Null"))
a Is Null

?BuildCriteria("a", dbDate, "1.2.2017")
a=#2/1/2017#


*Buildcriteria weist Mänglel bei Textkriterien mit Klammern innerhalb von Textparametern auf und sollte deshalb nicht blind verwendet werden.
Titel: Re: Mit SQL Datumsvergleich
Beitrag von: Beaker s.a. am September 28, 2017, 17:24:19
Hallo Lachtaube,
Zitatwenn der Parameterwert einmal Null ist.
Dürfte eigentlich nicht passieren bei der Verwendung von Nz().
BuildCriteria wird von mir, frag' mich nicht warum, sehr stiefmütterlich behandelt  >:(
gruss ekkehard
Titel: Re: Mit SQL Datumsvergleich
Beitrag von: Lachtaube am September 28, 2017, 18:13:41
Ekkehard,

mit Nz() allein ist das nicht getan, auch der Vergleichsoperator muss ja angepasst werden.