Neuigkeiten:

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

Mobiles Hauptmenü

Mit SQL Datumsvergleich

Begonnen von smily68, August 13, 2013, 10:02:25

⏪ vorheriges - nächstes ⏩

smily68

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


DF6GL

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\#")

Chris_Kaa

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... :'(

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Lachtaube

... 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.
Grüße von der (⌒▽⌒)

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Lachtaube

Ekkehard,

mit Nz() allein ist das nicht getan, auch der Vergleichsoperator muss ja angepasst werden.
Grüße von der (⌒▽⌒)