caractère ' dans commande update ou insert

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric
Le #6186801
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

gold
Le #6186781
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
gold
Le #6186771
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" 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



Eric
Le #6186721
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" 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


Eric
Le #6186691
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

gold
Le #6186681
maintenant je comprends mieux
un grand merci
cordialement Jacques
Publicité
Poster une réponse
Anonyme