Richtiges Datum für SQL
Listing 1 zeigt einen typischen Fall, wobei die Datumswerte normalerweise eher aus einem Eingabefenster kommen, was aber am Problem selber nichts ändert.
Sub LoescheAltdaten()
Dim datVon As Date
Dim datBis As Date
Dim strSQL As String
datVon = #12/24/2005#
datBis = Date - 14
strSQL = "DELETE * FROM [Bestellungen] WHERE " & _
"([Bestelldatum] >= " & _
datVon & " AND [Bestelldatum] <= " & datBis & ")"
MsgBox strSQL
'CurrentDb.Execute strSQL ' zu Testzwecken kommentiert
End Sub
Das Beispiel in Listing 1 ist doppelt fehlerhaft. Am leichtesten erkennbar sind noch die fehlenden #-Zeichen zur Kennzeichnung eines (länderspezifischen!) Datums innerhalb einer Zeichenkette.
Automatische Übersetzung
Wer es aber aus dem grafischen Abfrage-Editor von Access gewöhnt ist, dass darin ein deutsch formatiertes Datum steht, hat dort noch nie auf die tatsächliche SQL-Ansicht umgeschaltet. Die amerikanischen Funktionsnamen und Formate werden da nämlich kurzerhand ins Deutsche übersetzt.
Das hat nicht nur den Vorteil, dass Sie die aus VBA gewohnten Befehle wie Left() in Englisch eingeben können und sie nach Verlassen der Zelle sofort in Deutsch vorfinden. Es hat leider auch den Nachteil, dass Feldnamen wie Agent-No für eine Vertreter-Personalnummer zwar korrekt wegen des Minuszeichens in zwei vermutete Feldnamen zerlegt werden, aber dann das No fälschlich nochmals übersetzt wird. Nach der
Eingabe von Agent-No verwandelt der grafische Abfrage-Editor dies unbekümmert in [Agent]-[Nein].