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
Weiterlesen...