VBA Tipp: Datum ins VBA-Datumsformat (SQL-Format) umwandeln

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Wenn als Bedingung beim Öffnen von Formularen, in SQL-Strings oder in Filter-Strings ein Datum verwendet wird, muss es im SQL-Format (amerikanisches Datumsformat) eingegeben werden. Da das Datum aber fast immer im deutschen Datumsformat als Text (Datentyp String) oder als Datum (Datentyp Date) vorliegt, muss es entsprechend umgewandelt werden.

Lösung

Das geht mit der folgenden Funktion, die in einem globalen Modul hinterlegt wird:

Public Function CDateSQL(ByVal Datumswert As Variant) As String
 
 'Quelle: www.dbwiki.net oder www.dbwiki.de
 
 If IsDate(Datumswert) Then
   CDateSQL = Format(CDate(Datumswert), "\#mm\/dd\/yyyy\#")
 End If
 
End Function

Aufruf

Beispiel 1: Einbau in einen SQL-String

... WHERE Bestelldatum = " & CDateSQL(MeinDatum) & " AND ...

Beispiel 2: Einbau in einen Filterstring

Dim strFilter As String
strFilter = "Bestelldatum = " & CDateSQL(MeinDatum)
Me.Filter = strFilter
Me.FilterOn = True

Beispiel 3: Formular nach Datum öffnen

DoCmd.OpenForm "Bestellungen", , , "Bestelldatum = " & CDateSQL(MeinDatum)

Beispiel 4: Im Recordset nach Datum suchen mit FindFirst

 Dim rs As DAO.Recordset
 
 Set rs = Me.RecordsetClone
 
 rs.FindFirst "Bestelldatum = " & CDateSQL(MeinDatum)
 Me.Bookmark = rs.Bookmark


Wiki hinweis.png

Hinweise:
• Der eingegebene Datumswert "MeinDatum" kann den Datentyp "String" (Text) oder "Date" (Datum) haben.
• Bei Eingabe eines ungültigen Datumswertes gibt die Funktion einen Leerstring zurück, und löst dadurch im aktuellen Code einen Laufzeitfehler aus.
• Wenn der Datumswert durch die Funktion Date() bereitgestellt wird, muss die Funktion CDateSQL() nicht verwendet werden, z.B.

 'entweder ohne CDateSQL-Funktion
 DoCmd.OpenReport "Bestellungen", acViewPreview, , "Lieferdatum >= Date() + 1"
 
 'oder mit CDateSQL-Funktion
 DoCmd.OpenReport "Bestellungen", acViewPreview, , "Lieferdatum >= " & CDateSQL(Date + 1)


Wiki-Links

Web-Links


Wiki faq.png FAQ: Dieser Artikel gehört zu den "Häufig gestellten Fragen" (FAQ). Die Seite Access-FAQ bietet eine Übersicht aller FAQ-Artikel.