Comment échapper les (') dans une requête sous ACCESS
Résolu
yfchauer
Messages postés
78
Date d'inscription
Statut
Membre
Dernière intervention
-
yfchauer Messages postés 78 Date d'inscription Statut Membre Dernière intervention -
yfchauer Messages postés 78 Date d'inscription Statut Membre Dernière intervention -
Bonsoir à tous
J'ai réalisé un formulaire de recherche à critères multiple
[code]
SQL = "SELECT MediaID, TitreMedia, Rangement, LibelleGenre, LibelleSupportMedia, (PrenomAuteur +' '+ NomAuteur) AS Nom_Auteur, " _
& "NomEditeur " _
& "FROM T_Medias, T_Genres, T_SupportMedia, T_Auteurs, T_Editeurs " _
& "WHERE T_Medias!CodeGenre = T_Genres!GenreID AND T_Medias!CodeSupport = T_SupportMedia!SupportID " _
& "AND T_Medias!CodeAuteur = T_Auteurs!AuteurID And T_Medias!CodeEditeur = T_Editeurs!NumEditeur " _
& "AND T_Medias!MediaID <> 0 "
If Not Me.ChkAuteur Then
SQL = SQL & "AND T_Auteurs![PrenomAuteur] + + [NomAuteur] LIKE '*" & Me.TxtAuteur & "*'"
End If
If Not Me.ChkEditeur Then
SQL = SQL & "AND T_Editeurs!NomEditeur LIKE '*" & Me.TxtEditeur & "*'"
End If
If Not Me.ChkGenre Then
SQL = SQL & "AND T_Genres!LibelleGenre = '" & Me.CboGenre & "'"
End If
If Not Me.ChkSupport Then
SQL = SQL & "AND T_SupportMedia!LibelleSupportMedia = '" & Me.CboSupport & "'"
End If
If Not Me.ChkTitre Then
SQL = SQL & "AND T_Medias!TitreMedia LIKE '*" & Me.TxtTitre & "*'"
End If
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
SQL = SQL & ";"
/code
La requête fonctionne normalement
Mais, j'ai un message d'erreur (Cf. copie d'écran) dans l'un des champs de recherche contient (') comme dans O'NEIL, etc...
Et donc, je souhaite savoir comment régler le souci de ces erreurs ?
J'ai vu dans un forum php/mysql que l'on peut créer une fonction pour échapper les (')
Est ce possible sous access?
Merci d'avance pour votre aide
J'ai réalisé un formulaire de recherche à critères multiple
[code]
SQL = "SELECT MediaID, TitreMedia, Rangement, LibelleGenre, LibelleSupportMedia, (PrenomAuteur +' '+ NomAuteur) AS Nom_Auteur, " _
& "NomEditeur " _
& "FROM T_Medias, T_Genres, T_SupportMedia, T_Auteurs, T_Editeurs " _
& "WHERE T_Medias!CodeGenre = T_Genres!GenreID AND T_Medias!CodeSupport = T_SupportMedia!SupportID " _
& "AND T_Medias!CodeAuteur = T_Auteurs!AuteurID And T_Medias!CodeEditeur = T_Editeurs!NumEditeur " _
& "AND T_Medias!MediaID <> 0 "
If Not Me.ChkAuteur Then
SQL = SQL & "AND T_Auteurs![PrenomAuteur] + + [NomAuteur] LIKE '*" & Me.TxtAuteur & "*'"
End If
If Not Me.ChkEditeur Then
SQL = SQL & "AND T_Editeurs!NomEditeur LIKE '*" & Me.TxtEditeur & "*'"
End If
If Not Me.ChkGenre Then
SQL = SQL & "AND T_Genres!LibelleGenre = '" & Me.CboGenre & "'"
End If
If Not Me.ChkSupport Then
SQL = SQL & "AND T_SupportMedia!LibelleSupportMedia = '" & Me.CboSupport & "'"
End If
If Not Me.ChkTitre Then
SQL = SQL & "AND T_Medias!TitreMedia LIKE '*" & Me.TxtTitre & "*'"
End If
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
SQL = SQL & ";"
/code
La requête fonctionne normalement
Mais, j'ai un message d'erreur (Cf. copie d'écran) dans l'un des champs de recherche contient (') comme dans O'NEIL, etc...
Et donc, je souhaite savoir comment régler le souci de ces erreurs ?
J'ai vu dans un forum php/mysql que l'on peut créer une fonction pour échapper les (')
Est ce possible sous access?
Merci d'avance pour votre aide
A voir également:
- Comment échapper les (') dans une requête sous ACCESS
- Acer quick access - Forum Logiciels
- Access appdata - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Exemple base de données Access de gestion ✓ - Forum Logiciels
- Requête sql pix - Forum Python
4 réponses
Bonjour
Pour échapper les apostrophes, il suffit de les doubler. Je me suis écrit la fonction suivante (il y a sans doute mieux) avec laquelle je n'ai jamais eu de problème :
Pour échapper les apostrophes, il suffit de les doubler. Je me suis écrit la fonction suivante (il y a sans doute mieux) avec laquelle je n'ai jamais eu de problème :
' double les apostrophes pour pouvoir passer des chaines aux requêtes SQL ' ceci suppose qu'on passe les chaînes aux requêtes entre apostrophes... Function ChaineBD(ByVal src As String) As String Dim k%, resultat$, r% k = 1 resultat = "" Do r = InStr(k, src, "'") If r = 0 Then ChaineBD = resultat & Mid$(src, k) ' on n'a rien trouvé, on ajoute la fin de la chaîne Exit Function End If resultat = resultat & Mid$(src, k, r - k + 1) & "'" k = r + 1 Loop End Function
Tu mets la fonction dans un module.
Ensuite, tu peux ré-écrire ta requête et utilisant la fonction sur toutes les valeurs de type texte. Elle inclut les apostrophes, ce qui t'évite d'ajouter des & "'" partout :
Je ne te montre qu'un exemple :
devient
ou
Au fait, tu es sûr de ctte ligne là avec ses deux + qui se suivent :
Ensuite, tu peux ré-écrire ta requête et utilisant la fonction sur toutes les valeurs de type texte. Elle inclut les apostrophes, ce qui t'évite d'ajouter des & "'" partout :
Je ne te montre qu'un exemple :
SQL = SQL & "AND T_Editeurs!NomEditeur LIKE '*" & Me.TxtEditeur & "*'"
devient
SQL = SQL & "AND T_Editeurs!NomEditeur LIKE " & ChaineBD("*" & Me.TxtEditeur & "*")
ou
Au fait, tu es sûr de ctte ligne là avec ses deux + qui se suivent :
SQL = SQL & "AND T_Auteurs![PrenomAuteur] + + [NomAuteur] LIKE '*" & Me.TxtAuteur & "*'"
Bonsoir,
J'ai un message d'erreur
"Erreur de compilation : Variable ou procédure attendue, et non un module"
lorsque j'intègre la fonction dans le code.
Quant à la question
[...]
Au fait, tu es sûr de cette ligne là avec ses deux + qui se suivent :
[...]
Oui, la concaténation fonctionne
J'ai un message d'erreur
"Erreur de compilation : Variable ou procédure attendue, et non un module"
lorsque j'intègre la fonction dans le code.
Quant à la question
[...]
Au fait, tu es sûr de cette ligne là avec ses deux + qui se suivent :
SQL = SQL & "AND T_Auteurs![PrenomAuteur] + + [NomAuteur] LIKE '*" & Me.TxtAuteur & "*'"
[...]
Oui, la concaténation fonctionne