' exec_requete est une fonction retournant un recordset a partir d'une chaine SQL
set rs1 = exec_requete(sqlstr1)
set rs2 = exec_requete(sqlstr2)
if rs1.EOF Or rs2.EOF then
msgbox "erreur..."
else
do until rs1.EOF Or rs2.EOF
if rs1.Fields(0) < rs2.Fields(0) then rs1.MoveNext
if rs1.Fields(0) > rs2.Fields(0) then rs2.MoveNext
if rs1.Fields(0) = rs2.Fields(0) then
dim sqlstr3 as string sqlstr3 "UPDATE sites SET sites.[Origine détaillée] '" & rs1.Fields(1) & "' WHERE (([sites].[NuméroTT]= '" & rs1.Fields(0) & "'));"
docmd.RunSQL (sqlstr3)
rs2.MoveNext
end if
loop
end if
end function
La fonction marche correctement jusqu'à ce que j'ai le champ :
rs1.Fields(1) a pour valeur : " blabla'blabla "
cad : avec une apostrophe au milieu de la valeur...
lors de l'execution de docmd.RunSQL, on a alors une erreur car la fameuse apostrophe vient perturber la construction de la chaine sqlstr3.
Ma question : y a t il un autre moyen que des apostrophes pour délimiter la valeur
... ' " & rs1.Fields(1) & " ' ...
merci bcp :)
A voir également:
Requetes SQL sous ACCESS, pb de : ' (le caractère)
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 21 nov. 2003 à 10:36
Salut ;O)
En effet, le problème vient très certainement de l'apostrophe.
Si rs1.Fields(1) contient un ou plusieurs apostrophes, Access interpretera mal la syntaxe SQL.
Si tu es sur Access 2000 ou supérieur, tu peux utiliser la fonction Replace pour doubler tous les apostrophes d'une chaîne de caractère passée dans ta requête.
Par contre si tu es sur Access97, la fonction Replace n'exsite pas. Il faudra donc la simuler en créent une de toute pièce.
Voici la fonction pour Access97:
Function Replace(ByVal Expression As String, ByVal Find As String, ByVal ReplaceWith As String) As String
Dim Temp As String
Dim P As Long
Temp = Expression
P = InStr(Temp, Find)
Do While P > 0
Temp = Left$(Temp, P - 1) & ReplaceWith & _
Mid$(Temp, P + Len(Find))
P = InStr(P + Len(ReplaceWith), Temp, Find, 1)
Loop
Replace = Temp
End Function
Utilisation:
sqlstr3 "UPDATE sites SET sites.[Origine détaillée] '" & Replace(rs1.Fields(1),"'","''") & "' WHERE (([sites].[NuméroTT]= '" & Replace(rs1.Fields(1),"'","''") & "'));"