Apostrophes dans une requête

Les instructions SQL échouent lorsque mes champs contiennent des apostrophes. Que faire ?

Le problème

Voici un exemple de code VBA qui construit une chaîne SQL et l’exécute.

La chaîne SQL finale est :
INSERT INTO table1 (nom, prenom) VALUES ('INISAN', 'Hervé')
et à la fin de l’opération, un nouvel enregistrement est inséré dans la table.
Les champs nom et prenom de la table étant de type Texte, il faut les délimiter par des guillemets ou des apostrophes.

Problème : si le nom ou le prénom contiennent une ou plusieurs apostrophes, l’instruction SQL échoue. Essayez de remplacer INISAN par D'ARTAGNAN pour voir !

La solution

La parade consiste à doubler les apostrophes ne servant pas de délimiteur, de façon à obtenir par exemple D''ARTAGNAN.

Ceci peut s’automatiser grâce à la fonction VBA Replace() (dont vous trouverez le détail dans l’aide en ligne d’Access). Voici un exemple de code amélioré :

La chaîne SQL devient après retraitement :
INSERT INTO table1 (nom, prenom) VALUES ('D''ARTAGNAN', 'Hervé')

A vous d’aménager le code en fonction de vos besoins, bien sûr : la fonction Replace() peut être intégrée directement dans une chaîne SQL, à condition de remplacer vbTextCompare par sa valeur numérique 1.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *