Je viens de rencontrer cette erreur moi-même. J'utilise Delphi 7 pour écrire dans une base de données MS Access 2003 en utilisant un composant TAdoQuery. (ancien code) Ma requête a fonctionné correctement directement dans MS Access, mais échoue dans Delphi à travers l'objet TAdoQuery. Mon erreur est venue d'un colon (excuses à l'affiche originale) d'une valeur date/heure. Si je comprends bien, le format date/heure de Jet SQL est # mm/jj/aaaa hh: nn: ss # (0 remplissage à gauche n'est pas requis).
Si la propriété TAdoQuery.ParamCheck a la valeur True, ce format échoue. (Merci les affiches!) Deux solutions sont: a) mettre ParamCheck à False, ou b) utiliser un format de date/heure différent, à savoir "mm/jj/aaaa hh: nn: ss" (avec les guillemets doubles).
J'ai testé ces deux options et toutes deux ont fonctionné.
Même si ce format de date/heure à double guillemet n'est pas le format date/heure Jet, Access est assez flexible pour être flexible sur ces formats date/heure. Je soupçonne également qu'il a quelque chose à voir avec le format de date/heure de BDE/LocalSQL/Paradox (SQL natif de Delphi 7 et moteur de base de données) (utilise des guillemets, comme ci-dessus). L'analyseur est probablement conçu pour ignorer les chaînes entre guillemets (les guillemets doubles sont le délimiteur de valeur de chaîne dans BDE LocalSQL), mais peut trébucher quelque peu sur d'autres formats date/heure non natifs.
SQL Server utilise des guillemets simples pour délimiter les chaînes, ce qui peut fonctionner au lieu de guillemets lors de l'écriture dans des tables SQL Server (non testées). Ou peut-être que l'objet Delphi TAdoQuery trébuchera encore. Désactiver ParamCheck dans ce cas peut être la seule option. Si vous envisagez de basculer la valeur de la propriété ParamCheck dans le code, vous économiserez du temps de traitement en vous assurant que la propriété SQL est vide avant de l'activer, si vous n'avez pas l'intention d'analyser le SQL actuel.
@Mason - Utilisez-vous des paramètres? Si non, est-ce que le réglage de ParamCheck: = Faux aide? –
J'utilise des paramètres. –