P.... d'apostrophe

Signaler
Messages postés
11
Date d'inscription
mercredi 19 juin 2002
Statut
Membre
Dernière intervention
1 mars 2008
-
Messages postés
26
Date d'inscription
dimanche 30 décembre 2001
Statut
Membre
Dernière intervention
19 avril 2003
-
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

Messages postés
55
Date d'inscription
mardi 21 mai 2002
Statut
Membre
Dernière intervention
6 mai 2009

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
Messages postés
117
Date d'inscription
vendredi 12 avril 2002
Statut
Membre
Dernière intervention
13 avril 2007

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
Messages postés
2
Date d'inscription
vendredi 19 avril 2002
Statut
Membre
Dernière intervention
26 juin 2002

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
Messages postés
11
Date d'inscription
mercredi 19 juin 2002
Statut
Membre
Dernière intervention
1 mars 2008

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
Messages postés
26
Date d'inscription
dimanche 30 décembre 2001
Statut
Membre
Dernière intervention
19 avril 2003

g eu le même blème et g remplacé les " par chr(34)

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