Erreur de syntaxe étrange... [Résolu]

Shaegal 110 Messages postés vendredi 1 février 2008Date d'inscription 31 août 2017 Dernière intervention - 11 août 2017 à 14:53 - Dernière réponse :  shaegal
- 16 août 2017 à 14:44
Bonjour,

Je développe une application permettant de piloter une base de données Access 2010.
Jusqu'à maintenant, je n'ai jamais eu de soucis pour piloter mes BDD access, mais aujourd'hui, je me trouve devant une erreur de syntaxe que je ne comprends pas.

Voici un exemple de requête générée par l'application:
"insert into DOSSIERS (NUM, DATE_INCID, SINISTRE, LOCAL, DEGATS, DATE_ENV_DAJ, ID_TECH, CODE_UF, CLOS) values (2, #2/10/2014#, True, 'BARRIÈRE ENTRÉE', 'BARRIÈRE DÉTRUITE. À REMPLACER (CAMION FRIGORIFIQUE A HEURTÉ ET DÉTÉRIORÉ LA BARRIÈRE AUTOMATIQUE DE L''ENTRÉE.', #2/10/2014#, 4, '0454', False)"

La table contient une clé primaire auto-générée. Le NUM est un numéro complémentaire géré par l'application. Les dates sont au format américain. Les quotes (apostrophes) sont remplacées par des doubles-quotes.

Lors du test de l'application, un message d'erreur apparait me disant que l'instruction INSERT INTO contient une erreur de syntaxe et ne valide pas la ligne dans Access. Pourtant, lorsque je copie cette requête dans une requête SQL d'Access, celle-ci passe sans problème.

Quelqu'un aurait-il une idée?

Merci d'avance

--
Afficher la suite 

15 réponses

Répondre au sujet
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - Modifié par vb95 le 11/08/2017 à 19:13
0
Utile
Bonjour
A tout hasard il ne manquerait pas un 0 devant le 2 du mois de février ( dates américaines : #MM/DD/YYYY#

M = Month (Mois)
D = Day (Jour)
Y= Year (Année)

#02/10/2014# et non #2/10/2014#

Sans certitude

Voir : http://codes-sources.commentcamarche.net/forum/affich-1507143-erreur-de-syntaxe-dans-l-instruction-insert-into

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
Commenter la réponse de vb95
0
Utile
1
Bonjour et merci de cette rapide réponse,

Non, car en SQL, les dates (encadrées de #) ne tiennent pas compte des 0 superflus.
Mais j'avoue avoir déjà essayé ce cas de figure.

En attendant, merci d'avoir essayé... ;-)
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 13 août 2017 à 00:08
Bonsoir
Une piste peut-être : https://support.office.com/fr-fr/article/Mots-et-symboles-r%C3%A9serv%C3%A9s-d-Access-2007-e33eb3a9-8baa-4335-9f57-da237c63eabe

A lire surtout cette partie là qui dit :

Mots réservés du moteur de base de données Access
Le moteur de base de données Access s'exécute dans différents modes, selon qu'il est appelé d'Access, d'objets d'accès aux données, du fournisseur OLE Microsoft du moteur de base de données Access, ou du pilote ODBC Microsoft Access. Il peut aussi bien être exécuté en mode ANSI qu'en mode non-ANSI (traditionnel).
Les ensembles de mots réservés de ces deux modes sont légèrement différents, si bien qu'une requête utilisant un mot réservé peut très bien fonctionner dans un mode comme échouer dans l'autre.
Commenter la réponse de ShaeGal
Whismeril 10599 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 13 août 2017 à 20:06
0
Utile
9
Bonjour,

Je ne suis pas spécialiste des bases de données.
Du coup, si j'étais confronté à ce soucis, je chercherais par dichotomie.
D'abord je testerai la requête
"insert into DOSSIERS (NUM) values (2)" 

Puis un champ de plus etc...

Mais d'un autre côté, mon instinct me dit que cela pourrait venir des parenthèses (celle commençant à Camion n'est pas refermée) ou de la double cote.
As tu essayé
"insert into DOSSIERS (NUM, DATE_INCID, SINISTRE, LOCAL, DEGATS, DATE_ENV_DAJ, ID_TECH, CODE_UF, CLOS) values (2, #2/10/2014#, True, 'BARRIÈRE ENTRÉE', 'BARRIÈRE DÉTRUITE. À REMPLACER CAMION FRIGORIFIQUE A HEURTÉ ET DÉTÉRIORÉ LA BARRIÈRE AUTOMATIQUE DE L ENTRÉE.', #2/10/2014#, 4, '0454', False)" 


shaegal > vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 14 août 2017 à 11:13
Bonjour vb95,

En fait, j'ai tenté ma chance avec les mots réservés que tu m'as donné en premier. J'ai donc encadré mes champs par des [ ] et tout passe correctement.

J'aimerai connaître le mot clé SQL réservé mais je penche pour LOCAL.
Je pense utiliser la méthode dichotomique suggérée par Whismeril pour le trouver.

Merci à toutes et tous pour votre aide.

PS. Je ne trouve pas la commande RÉSOLU... :-/
vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > shaegal - 14 août 2017 à 11:18
Donc le problème serait résolu alors ?
connecte toi avec ton compte et mets le sujet en résolu si c'est le cas !
Si tu ne peux pas je peux le faire pour toi si tu m'autorises !
Shaegal 110 Messages postés vendredi 1 février 2008Date d'inscription 31 août 2017 Dernière intervention > vb95 1388 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 14 août 2017 à 12:58
Il est étrange que j'ai pu répondre à tout le monde sans m'être connecté.
Merci quand même... ;-)
Whismeril 10599 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention > Shaegal 110 Messages postés vendredi 1 février 2008Date d'inscription 31 août 2017 Dernière intervention - 14 août 2017 à 13:10
Bonjour, il n'est pas nécessaire d'être connecté, ni même inscrit, pour poster.
Cependant le site ne propose le lien "Marquer comme résolu" qu'au créateur de la discussion, quand tu es membres, ça marche toujours, quand tu ne l'es pas il faut que tu sois "reconnu", par cookie entre autre.

Il suffit d'effacer le cache, de changer de navigateur, de pc (ou de téléphone) et ça ne marche pas.
Shaegal 110 Messages postés vendredi 1 février 2008Date d'inscription 31 août 2017 Dernière intervention > Whismeril 10599 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 14 août 2017 à 16:00
Ok. C'est retenu.
Commenter la réponse de Whismeril
Whismeril 10599 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 13 août 2017 à 20:14
0
Utile
sinon après quelques recherches, je vois que il est souvent conseillé d'utiliser une requête paramétrée plutot qu'une string.


Commenter la réponse de Whismeril
0
Utile
Bonjour,

Alors, pour ceux que ça intéresse, c'est bien le mot LOCAL qui est réservé en SQL Access... ;-)
Commenter la réponse de shaegal

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.