P.... d'apostrophe

Bagbones Messages postés 11 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 1 mars 2008 - 26 juin 2002 à 08:25
pingwee Messages postés 26 Date d'inscription dimanche 30 décembre 2001 Statut Membre Dernière intervention 19 avril 2003 - 28 juin 2002 à 16:45
Bonjour,

je tente désespérement de passer un argument contenant un apostrophe à une requête SQL, mais ca plante (opérateur absent), voila l'un des codes que j'ai essayé :

If (Princ.Combo17.Text <> "") Then
std = DoubleCote(Princ.Combo17.Text)
Set mag = New Recordset
mag.Open "select telemag from magasins where Region ='" & _
Princ.Combo16.Text & "' and Villemag ='" & Princ.Combo15.Text & _
"' and Adressemag =" & std, conmag, adOpenDynamic

telmag = mag!Telemag
mag.Close
End If

'Fonction reprise sur http://docvb.free.fr/

' A noter que depuis VB6 un simple Replace( stTXT, "'", "''") suffit.
Public Function DoubleCote(ByVal stTXT As String) As String
' Reçoit une chaîne et double les apostrophes qui se trouvent à l'intérieur...
Dim lgPos As Long
Dim stTMP As String
stTMP = stTXT
' On cherche la position dans la chaîne de la première apostrophe
lgPos = InStr(stTMP, "'")
' Tant qu'il y a des apostrophes dans la chaîne...
Do While lgPos > 0
' Chaîne = début de la chaîne (apostrophe comprise) + "'" + fin de la chaîne
stTMP = Left$(stTMP, lgPos) & "'" & Right$(stTMP, Len(stTMP) - lgPos)
' On cherche la position de l'apostrophe suivante
lgPos = InStr(lgPos + 2, stTMP, "'")
Loop
' Renvoie la chaîne modifiée
DoubleCote = Trim(stTMP)
End Function

voila, je sais qu'il faut remplaceer l'apostrophe par une double apostrophe, et c'est ce que fait trés bien cette fonction, mais ma requête plante quand même, alors QUID?

Merci,
Bagbones

5 réponses

nariel1 Messages postés 55 Date d'inscription mardi 21 mai 2002 Statut Membre Dernière intervention 6 mai 2009
26 juin 2002 à 09:57
essaye plutot ca
Public Function CheckForQuote(str As String)
If str = "" Then
CheckForQuote = ""
Exit Function
End If
Dim lPos As Long
Dim slPos1 As Long
lPos = 1

Do While lPos <> 0
slPos1 = InStr(lPos, str, "'")

If slPos1 > 0 Then
str = Mid(str, 1, slPos1) & "'" & _
Mid(str, slPos1 + 1, Len(str) - slPos1)
lPos = InStr(slPos1 + 1, str, "'") + 1
Else
lPos = 0
End If
Loop
CheckForQuote = str
End Function
nariel1
0
cs_DeathAngel Messages postés 117 Date d'inscription vendredi 12 avril 2002 Statut Membre Dernière intervention 13 avril 2007
26 juin 2002 à 09:59
Salut !

Bah si tu m'offres le café, je te le dit =D

bon, regarde :

"' and Adressemag =" & std, conmag, adOpenDynamic

si tu le remplace par :
"' and Adressemag ='" & std & "'", conmag, adOpenDynamic

ca va de suite mieux marcher ;)

@peluche et bon dev'
DA
0
IAmJerome Messages postés 2 Date d'inscription vendredi 19 avril 2002 Statut Membre Dernière intervention 26 juin 2002
26 juin 2002 à 11:52
N'est-ce pas juste que tu as oublié les ' de début et de fin sur "and Adressemag = " & std ?
Ce devrait être je pense Adressemag = '" & std & "' "
0
Bagbones Messages postés 11 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 1 mars 2008
26 juin 2002 à 14:09
Désolé nariel1 , il me renvoit :

Erreur de syntaxe(operateur absent) dans l'expression 'Region ='nord' and Villemag='Rouen'and Adressemag =' 193 rue d''alempoint'.

et le débogage pointe sur le troisième ligne de ma requéte.

Mais Merci ,
Bagbones
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pingwee Messages postés 26 Date d'inscription dimanche 30 décembre 2001 Statut Membre Dernière intervention 19 avril 2003
28 juin 2002 à 16:45
g eu le même blème et g remplacé les " par chr(34)

j'espère que ca t'aura aidé
0
Rejoignez-nous