FONCTION POUR RÉSOUDRE LE PROBLÈME DES APOSTROPHES AVEC LES REQUETES SQL

Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009 - 21 févr. 2004 à 11:44
cs_hippo92210b Messages postés 59 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 décembre 2009 - 12 févr. 2007 à 11:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20638-fonction-pour-resoudre-le-probleme-des-apostrophes-avec-les-requetes-sql

cs_hippo92210b Messages postés 59 Date d'inscription lundi 12 février 2007 Statut Membre Dernière intervention 9 décembre 2009
12 févr. 2007 à 11:33
moi il me mais a un moment (can je veu executer mon programme) "La classe Form1 peut être conçue, mais il ne s'agit pas de la première classe du fichier. Visual Studio requiert que les concepteurs utilisent la première classe du fichier. Déplacez le code de la classe afin qu'il s'agisse de la première classe du fichier et essayez de recharger le concepteur."
apaulux Messages postés 73 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 2 octobre 2009
31 janv. 2007 à 18:04
sqlAEP21 = "SELECT Sum([RequêteMontantSubvention1].[Montant1]) AS Total"
sqlAEP21=sqlAEP21 & " FROM Dossier INNER JOIN RequêteMontantSubvention1 ON [Dossier].[NoDossier]=[RequêteMontantSubvention1].[NoDossier]"
sqlAEP21=sqlAEP21 & " WHERE ((([Dossier].[NatureGlobaleTravauxAEP]) like " & Chr(34) & test & Chr(34) & "))"

Set rs = CurrentDb.OpenRecordset(sqlAEP21)
apaulux Messages postés 73 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 2 octobre 2009
31 janv. 2007 à 18:01
PaScript : Editeur de bases de données
http://multibases.site.voila.fr/index.html

sqlAEP21 = "SELECT Sum([RequêteMontantSubvention1].[Montant1]) AS Total"
sqlAEP21=sqlAEP21 & " FROM Dossier INNER JOIN RequêteMontantSubvention1 ON [Dossier].[NoDossier]=[RequêteMontantSubvention1].[NoDossier]"
sqlAEP21=sqlAEP21 & " WHERE ((([Dossier].[NatureGlobaleTravauxAEP]) like " & Chr(34) & "E10" & Chr(34) & "))"

Set rs = CurrentDb.OpenRecordset(sqlAEP21)
mastercatz Messages postés 193 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 12 août 2010
2 août 2006 à 16:35
WHERE ([Dossier].[NatureGlobaleTravauxAEP] = '" & test & "')"
si tu n'englobe pas le test dans les () ca ne sert a rien
rob29 Messages postés 6 Date d'inscription jeudi 3 novembre 2005 Statut Membre Dernière intervention 2 août 2006
2 août 2006 à 15:48
ben j'ai mis sa à la fin de ma requête WHERE ([Dossier].[NatureGlobaleTravauxAEP])= '" & test & "';"
mais il y a un message d'erreur : opérateur absent.
je suis perdu
mastercatz Messages postés 193 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 12 août 2010
2 août 2006 à 15:46
WHERE ((([Dossier].[NatureGlobaleTravauxAEP])='test'));"
Tu peux enlever le ; à la fin de ta requete sql.
Concue comme ca ta requete va utiliser le mot test pour le Where, il faut uqe tu utilise la variable plutot.
rob29 Messages postés 6 Date d'inscription jeudi 3 novembre 2005 Statut Membre Dernière intervention 2 août 2006
2 août 2006 à 15:29
moi j'ai un problème similaire mais que je n'arrive pas à résoudre avec cette fonction :

test = "Réservoir d'eau"
test = Replace(test, "''", "'")

sqlAEP21 = "SELECT Sum([RequêteMontantSubvention1].[Montant1]) AS Total
FROM Dossier INNER JOIN RequêteMontantSubvention1 ON [Dossier].[NoDossier]=[RequêteMontantSubvention1].[NoDossier]
WHERE ((([Dossier].[NatureGlobaleTravauxAEP])='test'));"

Set rs = CurrentDb.OpenRecordset(sqlAEP21)
AEP21.Value = rs.Fields(0).Value
rs.Close

Quelqu'un peut-il m'aider svp ????
Dromax Messages postés 40 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 23 septembre 2005
1 mai 2004 à 09:34
Ah ok merci bcp
cs_Berurier Messages postés 31 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 28 juin 2013
1 mai 2004 à 08:26
Salut,

C'est vrai que j'aurai pu en dire plus....

fonction chr()
Renvoie une valeur de type String contenant le caractère associé au code de caractère indiqué.

34 , c'est le code de ".

Tu evites ainsi les combinaison comme "'" ou autre double quote....

ansi source=select * from famille where nom="L'arbre"

j'espère avoir répondu à ta question.
Dromax Messages postés 40 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 23 septembre 2005
30 avril 2004 à 16:28
C koi ce char(34) ?
Peut tu donner des details ?
cs_Berurier Messages postés 31 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 28 juin 2013
30 avril 2004 à 15:28
+simple
ex : Requete selection

Dim Source as string

chaine="L'arbre"

source=" Select * from toto where name ="+chr(34)+chaine+chr(34)
mastercatz Messages postés 193 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 12 août 2010
23 févr. 2004 à 14:45
Ca reste quand meme du pourquoi faire simple quand on peut faire compliqué ^^
mastercatz Messages postés 193 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 12 août 2010
23 févr. 2004 à 14:33
Ca reste quand meme du pourquoi faire simple quand on peut faire compliqué ^^
Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009
23 févr. 2004 à 12:32
En fait je pense qu'il ne parle pas de remplacer une apostrophe "standard" mais une apostrophe "à l'envers" par une "vraie apostrophe"
Car l'apostrophe "à l'envers" est utilisée dans certains cas et qui posent des pb dans certains cas (j'ai déjà eu le cas).
Donc son idée est bonne mais faite à la façon VB5 en .NET car dans VB5 il n'y avait pas de replace si je me souviens bien :p
Bazinou Messages postés 9 Date d'inscription jeudi 3 juillet 2003 Statut Membre Dernière intervention 26 mai 2004
23 févr. 2004 à 10:06
Petite rem. : tu peux conserver ton apostrophe au lieu de le remplacer par un espace ou autre chose : tu le doubles, au final il en y aura qu'un dans ta chaine une fois ta requête SQL exécutée.

Pour ma part je connaissais pas non plus le Replace (oups ...c'est pourtant basic), donc cool pour l'info.
Disicom Messages postés 107 Date d'inscription vendredi 8 novembre 2002 Statut Membre Dernière intervention 28 mars 2011
23 févr. 2004 à 08:42
idem : Text1= Replace(Text1, "'", " ")

c'est com même plus facile mais bon chacun sont truc lol

++

Bonne continuation
cs_mestari Messages postés 29 Date d'inscription samedi 19 avril 2003 Statut Membre Dernière intervention 12 mars 2006
22 févr. 2004 à 14:36
Merci les gars pour votre interet , je tiens à rapeller pour ma defense que cette fonction a été ecrit vers 3h du mat donc! Mais pour me faire pardonner cette con.. je déposerais bientot une source complete
Merci encore
Dromax Messages postés 40 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 23 septembre 2005
22 févr. 2004 à 13:47
Bin t passé avant moi.

J'allais te sugerer la meme chose !!!
Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009
21 févr. 2004 à 11:44
oulalala
La même chose en 1 ligne

txt= txt.Replace("'","'")

C'est pas optimisé du tout ce que tu fais là
Rejoignez-nous