Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

caractère ' dans commande update ou insert

6 réponses
Avatar
gold
Bonjour,

Dans le cadre d'une migration access (DAO) vers SQL Server, je transforme
toutes mes requêtes edit en update et addnew en insert into

Lorsque une des varaibles à transmettre contient le caractère ' la commande
ne passe pas.

J'empêche donc de pouvoir transmettre le caractère ' mais c'est peu élégant.

Quelqu'un connaît il une solution plus valable ?

Merci d'avance

Cordialement Jacques

6 réponses

Avatar
Eric
Bonjour,

Encadres dans le sql les variables transmises susceptibles de contenir
une ' par des CHR(34)
exemple:
strSociete= "École Supérieure d'Arts Appliqués"

pour le insert into, le sql pourrait être:
strSQL =Insert into LaTable(Societe) Values(" & CHR(34) & strSociete &
CHR(34) & ");"

Bonjour,

Dans le cadre d'une migration access (DAO) vers SQL Server, je transforme
toutes mes requêtes edit en update et addnew en insert into

Lorsque une des varaibles à transmettre contient le caractère ' la commande
ne passe pas.

J'empêche donc de pouvoir transmettre le caractère ' mais c'est peu élégant.

Quelqu'un connaît il une solution plus valable ?

Merci d'avance

Cordialement Jacques




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
gold
Merci Eric, cela marche parfaitement.

Juste pour ne pas mourir idiot ...

On m'avait dit d'ajouter dans le cas d'un string le caractère '

strSQL =Insert into LaTable(Societe) Values('" & strSociete & "');"

je ne vois pas l'intérêt puisque chr(34) fait beaucoup mieux !

cordialement Jacques
Avatar
gold
dans le chapitre rien n'est parfait...et quelques tests après

avec chr(34) c'est maintenant le caractère " qui ne passe plus...
cordialement Jacques


"gold" a écrit dans le message de news:
uik3%23$
Merci Eric, cela marche parfaitement.

Juste pour ne pas mourir idiot ...

On m'avait dit d'ajouter dans le cas d'un string le caractère '

strSQL =Insert into LaTable(Societe) Values('" & strSociete & "');"

je ne vois pas l'intérêt puisque chr(34) fait beaucoup mieux !

cordialement Jacques



Avatar
Eric
re,

Si tu peux avoir et le ' et/ou le " dans ta chaine alors faire:

strSQL = "Insert into Table1(LeChamp) Values('" & _
Replace(strSociete, "'", "''") & "');"

dans le chapitre rien n'est parfait...et quelques tests après

avec chr(34) c'est maintenant le caractère " qui ne passe plus...
cordialement Jacques


"gold" a écrit dans le message de news:
uik3%23$
Merci Eric, cela marche parfaitement.

Juste pour ne pas mourir idiot ...

On m'avait dit d'ajouter dans le cas d'un string le caractère '

strSQL =Insert into LaTable(Societe) Values('" & strSociete & "');"

je ne vois pas l'intérêt puisque chr(34) fait beaucoup mieux !

cordialement Jacques






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
Eric
re,

le ' marche pour encadrer une chaine si cette dernière ne contient pas,
à son tour, une quote et est plus court à écrire que les Chr(34) qui
correspond au ". Si la chaine passée contient un quote, le nombre impair
perturbe le SQL car il ne s'y retrouve pas dans les délimiteurs
Maintenant si tu as un " dans la chaine et que tu l'encadres par des
Chr(34), alors tu es confronté à ton 2ème problème. Le SQL ne s'y
retrouve pas dans les délimiteurs car il trouve un guillemet de trop.
Donc, il fallait envisager que ta chaine puisse contenir les 2 cas, ce
que j'ai omis de faire.
Pour cela, on en revient au quote pour entourer et on utilise la
fonction Replace() pour doubler le quote dans la variable passée. Ce qui
autorise le " car rien n'est remplacé et permet de rester cohérent au
niveau des délimiteurs ' car le SQL en voit 4 (2 extérieurs et le vrai
qu'on lui a fait prendre pour un double ;-)

Pas sûr d'être très clair, sur le coup.



Juste pour ne pas mourir idiot ...

On m'avait dit d'ajouter dans le cas d'un string le caractère '

strSQL =Insert into LaTable(Societe) Values('" & strSociete & "');"

je ne vois pas l'intérêt puisque chr(34) fait beaucoup mieux !

cordialement Jacques




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
gold
maintenant je comprends mieux
un grand merci
cordialement Jacques