OVH Cloud OVH Cloud

Champs avec caractère genant dans requete SQL

3 réponses
Avatar
Bonjour,


Pourriez vous m'aider, j'ai une requete SQL : "SELECT * FROM produit WHERE
code = '" & Valeur & "'"

Valeur est une variable de type string, mon prbl c'est que de temps en temps
dans cette variable j'ai un le signe ' du coup ça bug ma requete.
Existe t-il une methode pour indiquer que valeur et un ensemble et que la
requete ne doit pas tenir compte des eventuelles commandes presentes dans
cette variable.

Merci d'avance pour votre aide.

Damien

--
PS: Nous vous remercions de confirmer la bonne réception du présent message.

NEWAC
Technopole de l'Aube
BP3
10902 TROYES cedex

N° Visioconférence : 03 25 49 46 34

T : 03 25 45 18 90
Fax : 03 25 45 18 99

www.newac.fr
Email : newac@newac.fr

Ce message électronique et tous les fichiers attachés qu'il contient sont
confidentiels et destinés exclusivement à l'usage de la personne à laquelle
ils sont adressés. Si vous avez reçu ce message par erreur, merci de le
retourner à son émetteur. La publication, l'usage, la distribution,
l'impression ou la copie non autorisée de ce message et attachements qu'il
contient sont strictement interdits.

3 réponses

Avatar
SAISAS
Ci après le code d'une fonction qui double les "". Tu peux faire la même avec
des ''.

Public Function Dbl_Quote(ByVal Entree As String) As String
Dim i As Integer
Dim Sortie, Suite As String

If IsNull(Entree) Then
Dbl_Quote = " "
Else
Suite = Entree
Sortie = ""
i = InStr(1, Suite, """")
Do While i > 0
Sortie = Sortie & Left(Suite, i - 1) & """"""
Suite = Mid(Suite, i + 1)
i = InStr(1, Suite, """")
Loop
Sortie = Sortie & Suite
Dbl_Quote = Sortie
End If

End Function

"util" a écrit :

Bonjour,


Pourriez vous m'aider, j'ai une requete SQL : "SELECT * FROM produit WHERE
code = '" & Valeur & "'"

Valeur est une variable de type string, mon prbl c'est que de temps en temps
dans cette variable j'ai un le signe ' du coup ça bug ma requete.
Existe t-il une methode pour indiquer que valeur et un ensemble et que la
requete ne doit pas tenir compte des eventuelles commandes presentes dans
cette variable.

Merci d'avance pour votre aide.

Damien

--
PS: Nous vous remercions de confirmer la bonne réception du présent message.

NEWAC
Technopole de l'Aube
BP3
10902 TROYES cedex

N° Visioconférence : 03 25 49 46 34

T : 03 25 45 18 90
Fax : 03 25 45 18 99

www.newac.fr
Email :

Ce message électronique et tous les fichiers attachés qu'il contient sont
confidentiels et destinés exclusivement à l'usage de la personne à laquelle
ils sont adressés. Si vous avez reçu ce message par erreur, merci de le
retourner à son émetteur. La publication, l'usage, la distribution,
l'impression ou la copie non autorisée de ce message et attachements qu'il
contient sont strictement interdits.





Avatar
Drizzit
Tu peux faire ceci :
Ajouter dans un module la fonction suivante :

Public Function gf_Baser(ByVal vvar_Valeur As Variant) As String
Dim str_Res As String
On Error GoTo GstErreur

Select Case VarType(vvar_Valeur)
Case vbEmpty ' 0 Empty (non initialisée)
str_Res = "NULL"
Case vbNull ' 1 Null (aucune donnée valide)
str_Res = "NULL"
Case vbInteger ' 2 Entier
str_Res = CStr(vvar_Valeur)
Case vbLong ' 3 Entier long
str_Res = CStr(vvar_Valeur)
Case vbSingle ' 4 Nombre à virgule flottante en simple
précision
str_Res = CStr(vvar_Valeur)
Case vbDouble ' 5 Nombre à virgule flottante en double
précision
str_Res = CStr(vvar_Valeur)
Case vbDate ' 7 Valeur de date
' Pour Access
str_Res = "#" & format(vvar_Valeur, "mm/dd/yyyy") & "#"
Case vbString ' 8 Chaîne
if vvar_Valeur = "" then
str_Res = "NULL"
else
str_Res = "'" & Replace(vvar_Valeur , "'", "''") & "'"
end if
Case vbObject ' 9 Objet
str_Res = "NULL"
Case vbError ' 10 Valeur d'erreur
str_Res = "NULL"
Case vbBoolean ' 11 Valeur booléenne
' Pour Access
str_Res = IIf(vvar_Valeur, "TRUE", "FALSE")
Case vbVariant ' 12 Variant (utilisée seulement avec
destableaux de variants)
str_Res = "NULL"
Case vbDataObject ' 13 Objet d'accès aux données
str_Res = "NULL"
Case vbDecimal ' 14 Valeur décimale
str_Res = "NULL"
Case vbByte ' 17 Octet
str_Res = "NULL"
Case vbUserDefinedType ' 36 Variant contenant des types définis
par l'utilisateur
str_Res = "NULL"
Case vbArray ' 8192 Tableau
str_Res = "NULL"
End Select

gf_Baser = str_Res
Exit Function
GstErreur:
MsgBox Err.Number & " - " & Err.Description
End Function

et après tu fais cela :

Dim strSQL as string
strSQL = "SELECT * FROM produit WHERE code = " & gf_Baser("C'est une
valeur avec un caractère ' ")
Avatar
jean-marc
<util> wrote in message news:#
Bonjour,


Pourriez vous m'aider, j'ai une requete SQL : "SELECT * FROM produit WHERE
code = '" & Valeur & "'"

Valeur est une variable de type string, mon prbl c'est que de temps en


temps
dans cette variable j'ai un le signe ' du coup ça bug ma requete.
Existe t-il une methode pour indiquer que valeur et un ensemble et que la
requete ne doit pas tenir compte des eventuelles commandes presentes dans
cette variable.



Hello,

Il n'existe pas de méthodes SQL pour cela. En revanche,
ce qu'on fait souvent, c'est de doubler les simples
quotes éventuelles dans Valeur avant de faire la requête.
En VB, on ferait:

Valeur = Replace(Valeur, "'", "''")

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;