Ich bin gerade auf diesen Fehler gestoßen. Ich verwende Delphi 7, um mit einer TAdoQuery-Komponente in eine 2003 MS Access-Datenbank zu schreiben. (alter Code) Meine Abfrage funktionierte direkt in MS Access, scheitert aber in Delphi durch das TAdoQuery-Objekt. Mein Fehler kam von einem Doppelpunkt (Entschuldigung für das ursprüngliche Poster) von einem Datum/Uhrzeit-Wert.
Wie ich es verstehe, Jet SQL Datum/Uhrzeit Format ist # mm/TT/JJJJ hh: nn: ss # (0 links-Padding ist nicht erforderlich).
Wenn die TAdoQuery.ParamCheck-Eigenschaft True ist, schlägt dieses Format fehl. (Danke Plakate!) Zwei Workarounds sind: a) setze ParamCheck auf False, oder b) verwende ein anderes Datums-/Zeitformat, nämlich "mm/tt/jjjj hh: nn: ss" (MIT den doppelten Anführungszeichen).
Ich testete beide Optionen und beide funktionierten.
Auch wenn dieses Datums-/Uhrzeitformat mit doppelten Anführungszeichen nicht das Jet-Datums-/Uhrzeitformat ist, ist Access ziemlich gut darin, bei diesen Datums-/Uhrzeitformaten flexibel zu sein. Ich vermute auch, dass es etwas mit dem Datum/Uhrzeit-Format von BDE/LocalSQL/Paradox (native SQL und Datenbank-Engine von Delphi 7) zu tun hat (verwendet doppelte Anführungszeichen wie oben). Der Parser ist wahrscheinlich entworfen, um in Anführungszeichen gesetzte Zeichenfolgen zu ignorieren (doppelte Anführungszeichen sind der Zeichenfolgenwertbegrenzer in BDE LocalSQL), kann aber bei anderen nicht-nativen Datums-/Zeitformaten etwas stolpern.
SQL Server verwendet einfache Anführungszeichen zum Abgrenzen von Zeichenfolgen, sodass diese beim Schreiben in SQL Server-Tabellen anstelle von Anführungszeichen verwendet werden können (nicht getestet). Oder vielleicht stolpert das Delphi TAdoQuery Objekt noch. In diesem Fall kann die Deaktivierung von ParamCheck die einzige Option sein. Wenn Sie den ParamCheck-Eigenschaftswert im Code umschalten möchten, sparen Sie Verarbeitungszeit, indem Sie sicherstellen, dass die SQL-Eigenschaft leer ist, bevor Sie sie aktivieren, wenn Sie nicht vorhaben, das aktuelle SQL zu analysieren.
@Mason - Verwenden Sie Parameter? Wenn nicht, hilft die Einstellung ParamCheck: = False? –
Ich verwende Parameter. –