Pb d'envoi de requête contenant une apostrophe

spacest Messages postés 11 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 13 avril 2005 - 10 mars 2003 à 10:05
Pikashoute Messages postés 91 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 23 décembre 2005 - 10 mars 2003 à 15:36
Bonjour et bonne semaine,

Je dois envoyer une requete du style:

sqlverif = "select * from maTable where NOM='" & cboChoixNom & "'"
Set rs = db.OpenRecordset(sqlverif)

mais si cboChoixNom contient une apostrophe (ex: cbochoixnom="l'arbre") cela crée une erreur.

Comment contourner ce problème, si possible sans modifier chaque apostrophe de ma base de données?

D'avance merci!

3 réponses

Pikashoute Messages postés 91 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 23 décembre 2005
10 mars 2003 à 10:53
j'ai eu le probleme récemment, et j'ai du créer une fonction qui corrige cette erreur :

Public Function AjoutCaractere(ByVal Str_Valeur As String, ByVal Str_Caract As String)
Dim Int_Chaine As Integer
Dim Str_Chaine As String
Dim Str_Chaine_Suiv As String

Int_Chaine = InStr(1, Str_Valeur, "'")
If Int_Chaine = 0 Then
AjoutCaractere = Str_Valeur
Else
While Int_Chaine > 0
Int_Chaine = InStr(1, Str_Valeur, "'")
If Int_Chaine = 0 Then
Str_Chaine = Str_Valeur
Else
Str_Chaine = Left(Str_Valeur, Int_Chaine)
End If

Str_Chaine_Suiv = Str_Chaine_Suiv & Str_Chaine & "'"
Str_Valeur = Right(Str_Valeur, Len(Str_Valeur) - Int_Chaine)
End While

AjoutCaractere = Left(Str_Chaine_Suiv, Len(Str_Chaine_Suiv) - 1)
End If

End Function

cette fonction ajoute un deuxième quote. mais quand tu regardes dans ta base de données il n'en apparait qu'une seule. C'est magique !!!

Donc pour que ton code marche voici ce que tu dois ecrire apres avoir créer cette fonction :

sqlverif = "select * from maTable where NOM='" & ajoutcaractere(cboChoixNom,"'") & "'"

Voilà !!
0
spacest Messages postés 11 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 13 avril 2005
10 mars 2003 à 15:18
Merci pour ta réponse, ça me fait gagner un temps précieux!

J'ai juste changé deux trois choses: j'ai remplacé "'" par strcaract dans la fonction (sinon ça ne servait pas), et while end par wend (sinon ça ne marche pas!)

Encore merci! :big)
0
Pikashoute Messages postés 91 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 23 décembre 2005
10 mars 2003 à 15:36
de rien et desole pour les trucs qui ne marchait pas mais je développe en vb.net et j'avais oublie !! :p
0
Rejoignez-nous