Guillements dans une String, dans une variable, utilisée dans une requête sql [Résolu]

Signaler
Messages postés
17
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
28 avril 2006
-
Messages postés
17
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
28 avril 2006
-
Bonjour,

J'ai lu un maximum d'informations avant de poster mais je n'ai pas trouver de réponse. Voici mon code (une partie) :

Private Sub InsertPatProsite()
Dim query As String
query = "INSERT INTO motifs (tools_number_tool, motif, motif_description, ID_Prosite, AC_Prosite, DO_Prosite, DT_Prosite) VALUES (" _
& rst!number_tools & ", " _
& Chr(34) & pa & Chr(34) & ", " _
& Chr(34) & des & Chr(34) & ", " _
& Chr(34) & id & Chr(34) & ", " _
& Chr(34) & ac & Chr(34) & ", " _
& Chr(34) & pdoc & Chr(34) & ", " _
& Chr(34) & dt & Chr(34) & ");"
CurrentDb.Execute query
End Sub

Les variables sont issus d'un fichier texte que je parse ligne par ligne. Mon problème est que pour certaines description (variable des), il y a des guillemets à l'intérieur de la chaine, "cassant" ma requête sql.
Ex : Lipolytic enzymes "G-D-S-L" family, serine active site
le tout étant une string (variable des)

J'ai donc essayé ceci :

Dim charact As String
charact = "" & Chr(34) & ""
Src = Replace$(montexte, Chr(34), charact)

Sauf que du coup, je remplace un guillemet par .... un guillemet et cela ne sert à rien. Mon objectif étant de passer outre les guillemets dans la string mais de les conserver à leur place pour leur insertion dans la base. Quelqu'un a une idée ?

7 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
il suffit de remplacer chaque quote de tes variables par deux quotes :

query = "INSERT INTO motifs (tools_number_tool, motif,
motif_description, ID_Prosite, AC_Prosite, DO_Prosite, DT_Prosite)
VALUES (" _
& rst!number_tools & ", " _
& "'" & Replace(pa,"'","''") & "', " _
& "'" & Replace(des,"'","''") & "', " _
& "'" & Replace(id,"'","''") & "', " _
& "'" & Replace(ac,"'","''") & "', " _
& "'" & Replace(pdoc,"'","''") & "', " _
& "'" & Replace(dt,"'","''") & "' );"

Renfield
Admin CodeS-SourceS - MVP Visual Basic
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 106 internautes nous ont dit merci ce mois-ci

Messages postés
17
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
28 avril 2006

J'ai aussi essayé de mettre juste Chr(34) à la place des guillemets, mais il écrit vraiment "Chr(34)" dans ma table.... Ceci dit, ça ne bloque plus ma requête sql
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
mets une simple quote .......

query = "INSERT INTO motifs (tools_number_tool, motif,
motif_description, ID_Prosite, AC_Prosite, DO_Prosite, DT_Prosite)
VALUES (" _
& rst!number_tools & ", " _
& "'" & pa & "', " _
& "'" & des & "', " _
& "'" & id & "', " _
& "'" & ac & "', " _
& "'" & pdoc & "', " _
& "'" & dt & "' );"

Renfield
Admin CodeS-SourceS - MVP Visual Basic
Messages postés
17
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
28 avril 2006

Merci beaucoup ! je n'avais pas pensé à ça, c'est vraiment plus simple et plus logique...
Messages postés
17
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
28 avril 2006

En fait, ta solution marche sur un test que j'ai fait mais ne fonctionne pas sur mon véritable fichier !! En effet, il y a aussi des simples quotes dedans...... As-tu une autre proposition ?
Messages postés
17
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
28 avril 2006

De plus, il n'y a pas que ça comme caractères spéciaux.... il y a aussi / par exemple
Messages postés
17
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
28 avril 2006

MERCI !! ça fonctionne très bien maintenant !