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

Messages postés
117
Date d'inscription
vendredi 1 février 2008
Dernière intervention
21 mars 2018
- - 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 

Votre réponse

5 réponses

Messages postés
1725
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
11 décembre 2018
0
Merci
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
Merci
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
Messages postés
1725
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
11 décembre 2018
-
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
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
0
Merci
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)" 


> vb95
Messages postés
1725
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
11 décembre 2018
-
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
Messages postés
1725
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
11 décembre 2018
> shaegal -
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
Messages postés
117
Date d'inscription
vendredi 1 février 2008
Dernière intervention
21 mars 2018
> vb95
Messages postés
1725
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
11 décembre 2018
-
Il est étrange que j'ai pu répondre à tout le monde sans m'être connecté.
Merci quand même... ;-)
Whismeril
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
> Shaegal
Messages postés
117
Date d'inscription
vendredi 1 février 2008
Dernière intervention
21 mars 2018
-
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
Messages postés
117
Date d'inscription
vendredi 1 février 2008
Dernière intervention
21 mars 2018
> Whismeril
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
-
Ok. C'est retenu.
Commenter la réponse de Whismeril
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
0
Merci
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
Merci
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.