OVH Cloud OVH Cloud

Syntaxe SQL

6 réponses
Avatar
Sun Service
Bonjour,

Voici une requête exécutée dans du code :

SELECT * FROM Table1 WHERE Nom =' " & VarNom & " '

Comment faire si la variable VarNom Comporte des ' ? En effet dans ce cas ça
fait planter la requête, ce qui est normal...

Merciiiiiiii

Laurent

6 réponses

Avatar
Gilbert
Bonjour,
Ttu peux essayer avec
SELECT * FROM Table1 WHERE Nom =' " & Replace(VarNom,"'","''") & " '
Ca double chaque apostrophe trouvée dans le nom et permet d'exécuter la
requete.

Cordialement
Gilbert

"Sun Service" a écrit dans le message de
news:c8sfug$tth$
Bonjour,

Voici une requête exécutée dans du code :

SELECT * FROM Table1 WHERE Nom =' " & VarNom & " '

Comment faire si la variable VarNom Comporte des ' ? En effet dans ce cas
ça

fait planter la requête, ce qui est normal...

Merciiiiiiii

Laurent




Avatar
Eric
Bonjour,

Autre solution sans la fonction Replace() mais en doublant les guillemets
encadrant la variable varNom , ce qui laisse tout loisir pour traiter des
' dans les chaines

SELECT * FROM Table1 WHERE Nom =""" & VarNom & """"

A+
Eric


"Sun Service" écrivait
news:c8sfug$tth$:

Bonjour,

Voici une requête exécutée dans du code :

SELECT * FROM Table1 WHERE Nom =' " & VarNom & " '

Comment faire si la variable VarNom Comporte des ' ? En effet dans ce
cas ça fait planter la requête, ce qui est normal...

Merciiiiiiii

Laurent





Avatar
Sun Service
Salut,

Merci pour ta réponse, mais je ne vois pas trop comment faire fonctionner
ceci....ça me retourne toujours une erreur....soit j'ai mal comprit, soit
j'ai pas bien posé ma question.

On est d'accord que le but est que ma requête (une fois les variables
remplacées) soit du type:
SELECT * FROM Table1 WHERE Nom='critere'
et que je puisse à la place de critere mettre du texte contenant une
apostrophe, dans le genre:
SELECT * FROM Table1 WHERE Nom='aujourd'hui'

.........merci


"Eric" a écrit dans le message de news:

Bonjour,

Autre solution sans la fonction Replace() mais en doublant les guillemets
encadrant la variable varNom , ce qui laisse tout loisir pour traiter des
' dans les chaines

SELECT * FROM Table1 WHERE Nom =""" & VarNom & """"

A+
Eric


"Sun Service" écrivait
news:c8sfug$tth$:

Bonjour,

Voici une requête exécutée dans du code :

SELECT * FROM Table1 WHERE Nom =' " & VarNom & " '

Comment faire si la variable VarNom Comporte des ' ? En effet dans ce
cas ça fait planter la requête, ce qui est normal...

Merciiiiiiii

Laurent








Avatar
Sun Service
Merci à toi, ça fonctionne parfaitement
Sans toutefois que je comprenne comment il arrive à gérer ça....enfin bon

Merci !

Laurent

"Gilbert" a écrit dans le message de news:
#
Bonjour,
Ttu peux essayer avec
SELECT * FROM Table1 WHERE Nom =' " & Replace(VarNom,"'","''") & " '
Ca double chaque apostrophe trouvée dans le nom et permet d'exécuter la
requete.

Cordialement
Gilbert

"Sun Service" a écrit dans le message de
news:c8sfug$tth$
Bonjour,

Voici une requête exécutée dans du code :

SELECT * FROM Table1 WHERE Nom =' " & VarNom & " '

Comment faire si la variable VarNom Comporte des ' ? En effet dans ce
cas


ça
fait planter la requête, ce qui est normal...

Merciiiiiiii

Laurent








Avatar
Eric
re,

je te donne un exemple:
Un formulaire avec une zone de texte (Texte0) et un bouton de commande
Dans la zone de texte je saisis : éditions de l'entreprise

sur le click du bouton, la procédure :

Private Sub Commande2_Click()
Dim strSQL As String, rs As DAO.Recordset
strSQL = "select * from tfournisseur where Societe_Fournisseur=""" &
Texte0 & """"
Set rs = CurrentDb.OpenRecordset(strSQL)
Debug.Print strSQL
Debug.Print rs(0), rs(1), rs(2)
Set rs = Nothing
End Sub

le code sql avec la variable texte0 remplacée donne :(Copie de la fenêtre
Exécution)

select * from tfournisseur where Societe_Fournisseur="éditions de
l'entreprise"

et j'obtiens :
7 Éditions de l'entreprise Aline Verney

Remarque: j'ai oublié le ; à la fin du sql mais ca ne change rien ;-)

Eric


"Sun Service" écrivait
news:c8t45g$uc6$:

Salut,

Merci pour ta réponse, mais je ne vois pas trop comment faire
fonctionner ceci....ça me retourne toujours une erreur....soit j'ai
mal comprit, soit j'ai pas bien posé ma question.

On est d'accord que le but est que ma requête (une fois les variables
remplacées) soit du type:
SELECT * FROM Table1 WHERE Nom='critere'
et que je puisse à la place de critere mettre du texte contenant une
apostrophe, dans le genre:
SELECT * FROM Table1 WHERE Nom='aujourd'hui'

.........merci


"Eric" a écrit dans le message de news:

Bonjour,

Autre solution sans la fonction Replace() mais en doublant les
guillemets encadrant la variable varNom , ce qui laisse tout loisir
pour traiter des ' dans les chaines

SELECT * FROM Table1 WHERE Nom =""" & VarNom & """"

A+
Eric


"Sun Service" écrivait
news:c8sfug$tth$:

Bonjour,

Voici une requête exécutée dans du code :

SELECT * FROM Table1 WHERE Nom =' " & VarNom & " '

Comment faire si la variable VarNom Comporte des ' ? En effet dans
ce cas ça fait planter la requête, ce qui est normal...

Merciiiiiiii

Laurent













Avatar
Sun Service
Ok, très bien, merci !!

"Eric" a écrit dans le message de news:

re,

je te donne un exemple:
Un formulaire avec une zone de texte (Texte0) et un bouton de commande
Dans la zone de texte je saisis : éditions de l'entreprise

sur le click du bouton, la procédure :

Private Sub Commande2_Click()
Dim strSQL As String, rs As DAO.Recordset
strSQL = "select * from tfournisseur where Societe_Fournisseur=""" &
Texte0 & """"
Set rs = CurrentDb.OpenRecordset(strSQL)
Debug.Print strSQL
Debug.Print rs(0), rs(1), rs(2)
Set rs = Nothing
End Sub

le code sql avec la variable texte0 remplacée donne :(Copie de la fenêtre
Exécution)

select * from tfournisseur where Societe_Fournisseur="éditions de
l'entreprise"

et j'obtiens :
7 Éditions de l'entreprise Aline Verney

Remarque: j'ai oublié le ; à la fin du sql mais ca ne change rien ;-)

Eric


"Sun Service" écrivait
news:c8t45g$uc6$:

Salut,

Merci pour ta réponse, mais je ne vois pas trop comment faire
fonctionner ceci....ça me retourne toujours une erreur....soit j'ai
mal comprit, soit j'ai pas bien posé ma question.

On est d'accord que le but est que ma requête (une fois les variables
remplacées) soit du type:
SELECT * FROM Table1 WHERE Nom='critere'
et que je puisse à la place de critere mettre du texte contenant une
apostrophe, dans le genre:
SELECT * FROM Table1 WHERE Nom='aujourd'hui'

.........merci


"Eric" a écrit dans le message de news:

Bonjour,

Autre solution sans la fonction Replace() mais en doublant les
guillemets encadrant la variable varNom , ce qui laisse tout loisir
pour traiter des ' dans les chaines

SELECT * FROM Table1 WHERE Nom =""" & VarNom & """"

A+
Eric


"Sun Service" écrivait
news:c8sfug$tth$:

Bonjour,

Voici une requête exécutée dans du code :

SELECT * FROM Table1 WHERE Nom =' " & VarNom & " '

Comment faire si la variable VarNom Comporte des ' ? En effet dans
ce cas ça fait planter la requête, ce qui est normal...

Merciiiiiiii

Laurent