OVH Cloud OVH Cloud

Guillemets dans une requête SQL

3 réponses
Avatar
Bruno LOUIS
Bonjour à tous,

Je rencontre une difficulté. Avant de revoir mon algorithme, je souhaiterais
avoir votre opinion.

La procédure suivante provoque une erreur lorsque les variables adr$ et clt$
contiennent des guillemets :


sqlQuery = "UPDATE TABLE tbl_Adresse SET" & _
"chp_Adresse1 = """ & adr$ & """" & _
" WHERE chp_Client =""" & clt$ & """"

adoCmd.CommandText = sqlQuery

adoCmd.Execute

Est-il possible de distinguer les guillemets contenu dans les variables adr$
et clt$ de ceux utilisé dans la reqûête SQL ?

Merci pour vos idées.

Bruno

3 réponses

Avatar
Fred
Dans le message:42ba9d8c$0$25041$,
Bruno LOUIS écrit:
Bonjour à tous,

Je rencontre une difficulté. Avant de revoir mon algorithme, je
souhaiterais avoir votre opinion.

La procédure suivante provoque une erreur lorsque les variables adr$
et clt$ contiennent des guillemets :


sqlQuery = "UPDATE TABLE tbl_Adresse SET" & _
"chp_Adresse1 = """ & adr$ & """" & _
" WHERE chp_Client =""" & clt$ & """"

adoCmd.CommandText = sqlQuery

adoCmd.Execute

Est-il possible de distinguer les guillemets contenu dans les
variables adr$ et clt$ de ceux utilisé dans la reqûête SQL ?

Merci pour vos idées.

Bruno



Bonjour,
Regarde s'il n'existe pas une propriétés Parameters dans ton adoCmd.
C'est prévu pour éviter ce genre de désagréments.

--
Fred
Avatar
Guy DETIENNE
Salut ;O)

Dans une requête, le texte doit être non pas entre guillemets mais entre
apostrophes

"MonTexte" devient 'MonTexte'

Ton exemple devient :

sqlQuery = "UPDATE TABLE tbl_Adresse SET" & _
"chp_Adresse1 = '" & adr$ & "'" & _
" WHERE chp_Client ='" & clt$ & "'"

Mais attention, si ta chaîne de caractères contient elle aussi des
apostrophes, il faudra les doubler.
Imaginons :

MaChaine ="Ceci est une chaine avec l'apostrophe"

Pour que cette chaîne soit correctement passée en SQL, en remplacera tous
les apostrophes de la chaîne par 2 apostrophes en utilisant la fonction
REPLACE = Replace(Machaine,"'","''")

Ca deviendra :
sqlQuery = "UPDATE TABLE tbl_Adresse SET" & _
"chp_Adresse1 = '" & Replace(adr$,"'","''") & "'" & _
" WHERE chp_Client ='" & Replace(clt$,"'","''") & "'"


Guy

"Bruno LOUIS" a écrit dans le message de
news:42ba9d8c$0$25041$
Bonjour à tous,

Je rencontre une difficulté. Avant de revoir mon algorithme, je


souhaiterais
avoir votre opinion.

La procédure suivante provoque une erreur lorsque les variables adr$ et


clt$
contiennent des guillemets :


sqlQuery = "UPDATE TABLE tbl_Adresse SET" & _
"chp_Adresse1 = """ & adr$ & """" & _
" WHERE chp_Client =""" & clt$ & """"

adoCmd.CommandText = sqlQuery

adoCmd.Execute

Est-il possible de distinguer les guillemets contenu dans les variables


adr$
et clt$ de ceux utilisé dans la reqûête SQL ?

Merci pour vos idées.

Bruno




Avatar
Fred
Dans son message
Guy DETIENNE nous dit :

Salut ;O)

Dans une requête, le texte doit être non pas entre guillemets mais
entre apostrophes

"MonTexte" devient 'MonTexte'

Ton exemple devient :

sqlQuery = "UPDATE TABLE tbl_Adresse SET" & _
"chp_Adresse1 = '" & adr$ & "'" & _
" WHERE chp_Client ='" & clt$ & "'"

Mais attention, si ta chaîne de caractères contient elle aussi des
apostrophes, il faudra les doubler.
Imaginons :

MaChaine ="Ceci est une chaine avec l'apostrophe"

Pour que cette chaîne soit correctement passée en SQL, en remplacera
tous les apostrophes de la chaîne par 2 apostrophes en utilisant la
fonction REPLACE = Replace(Machaine,"'","''")

Ca deviendra :
sqlQuery = "UPDATE TABLE tbl_Adresse SET" & _
"chp_Adresse1 = '" & Replace(adr$,"'","''") & "'" & _
" WHERE chp_Client ='" & Replace(clt$,"'","''") & "'"




Bonsoir,
Je viens de vérifier l'existence de l'objet Parameter en ADO. Il est
grandement préférable de l'utiliser.
Bruno a un problème avec ses guillemets (apostrophes en fait
effectivement), mais plus tard ce sera avec les formats de dates, les
formats numériques, pourquoi pas les caractères génériques ! Bref,
pourquoi refaire le boulot que fait de manière très fiable l'objet
parameter ? Parameter : un objet à découvrir sans plus tarder ;-)

--
Fred