1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

Problemstellung:

Für 32Bit und 64Bit Office Versionen

Will man SQL-Strings in VBA verwenden und im Kriterium kommen Datumsangaben vor
müssen diese in einem spieziellen Format dem SQL-String übergeben werden.

Im Abfrage-Editor macht das Access automatisch:

SELECT tbl_Fahrtdaten.ID_Fahrt_IST, tbl_Fahrtdaten.Datum_IST FROM tbl_Fahrtdaten WHERE (((tbl_Fahrtdaten.Datum_IST)=#4/11/2018#));

In VBA muss das Datum aber manuell formatiert werrden.
z.B.

Format("10.04.2018", "\#mm\/dd\/yyyy#\")
 
Mit einer kleinen Function kann dies etwas vereinfacht werden:
 
Function Sqldatum(dateDatum As Date)
    Sqldatum = Format(dateDatum, "\#mm\/dd\/yyyy#\")
End Function
 
Aufruf z.B.:
sSQL = "SELECT tbl_Fahrtdaten.Datum_IST, tbl_Stammdaten.FahrtNr, tbl_Fahrtdaten.An_IST " & _
        "FROM tbl_Fahrtdaten INNER JOIN tbl_Stammdaten ON tbl_Fahrtdaten.ID_FahrtNr_IST = tbl_Stammdaten.ID_Fahrt " & _
        "WHERE (((tbl_Fahrtdaten.Datum_IST) Between " & Sqldatum(dtFirstDay) & " And " & Sqldatum(dtLastDay) & ") " & _
        "AND ((IIf([Ausfall]=0,Null,1)) Is Null) And [FF_Ziel]=1) " & _
        "ORDER BY tbl_Fahrtdaten.Datum_IST, tbl_Fahrtdaten.An_IST;"
 
Hier werden dem SQL-String 2 Variablen mit einem Datum übergeben. Diese beiden Variablen werden im SQL-Code mittels der Sqldatum-Function formatiert
 

 

Ähnliche Artikel