Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Description

Remplacera les (') des textes saisis par les utilisateurs par un (`)
regardez plutot simple mais utile (en tout cas pour moi)
 

Source

  • Public Function Correct(ByVal txt As String) As String
  • 'verif des apostrophes
  • If txt.IndexOf("'") > -1 Then
  • Dim str(txt.Length - 1) As String
  • Dim i As Int32
  • 'je vide pour pouvoir remplir aprés
  • For I = 0 To txt.Length - 1
  • Str(I) = txt.Chars(I)
  • If str(i).ToString = "'" Then str(i) = "`" 'je corrige le texte
  • Next
  • txt = ""
  • For i = 0 To str.Length - 1
  • txt &= str(i) 'je remets le texte dans sa place
  • Next
  • End If
  • Return txt
  • End Function
Public Function Correct(ByVal txt As String) As String
        'verif des apostrophes
        If txt.IndexOf("'") > -1 Then
            Dim str(txt.Length - 1) As String
            Dim i As Int32
            'je vide pour pouvoir remplir aprés

            For I = 0 To txt.Length - 1
                Str(I) = txt.Chars(I)
                If str(i).ToString = "'" Then str(i) = "`" 'je corrige le texte
            Next
            txt = ""
            For i = 0 To str.Length - 1
                txt &= str(i) 'je remets le texte dans sa place
            Next
        End If
        Return txt

    End Function

Commentaires et avis

signaler à un administrateur
Commentaire de Nix le 21/02/2004 11:44:41 administrateur CS

oulalala
La même chose en 1 ligne

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

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

signaler à un administrateur
Commentaire de Dromax le 22/02/2004 13:47:29

Bin t passé avant moi.

J'allais te sugerer la meme chose !!!

signaler à un administrateur
Commentaire de mestari le 22/02/2004 14:36:39

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

signaler à un administrateur
Commentaire de Disicom le 23/02/2004 08:42:49

idem : Text1= Replace(Text1, "'", " ")

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

++

Bonne continuation

signaler à un administrateur
Commentaire de Bazinou le 23/02/2004 10:06:00

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.

signaler à un administrateur
Commentaire de Nix le 23/02/2004 12:32:58 administrateur CS

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

signaler à un administrateur
Commentaire de mastercatz le 23/02/2004 14:33:27

Ca reste quand meme du pourquoi faire simple quand on peut faire compliqué ^^

signaler à un administrateur
Commentaire de mastercatz le 23/02/2004 14:45:17

Ca reste quand meme du pourquoi faire simple quand on peut faire compliqué ^^

signaler à un administrateur
Commentaire de Berurier le 30/04/2004 15:28:44

+simple
ex : Requete selection

Dim Source as string

chaine="L'arbre"

source=" Select * from toto where name ="+chr(34)+chaine+chr(34)

signaler à un administrateur
Commentaire de Dromax le 30/04/2004 16:28:39

C koi ce char(34) ?
Peut tu donner des details ?

signaler à un administrateur
Commentaire de Berurier le 01/05/2004 08:26: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.

signaler à un administrateur
Commentaire de Dromax le 01/05/2004 09:34:37

Ah ok merci bcp

signaler à un administrateur
Commentaire de rob29 le 02/08/2006 15:29:48

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 ????

signaler à un administrateur
Commentaire de mastercatz le 02/08/2006 15:46:08

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.

signaler à un administrateur
Commentaire de rob29 le 02/08/2006 15:48:44

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

signaler à un administrateur
Commentaire de mastercatz le 02/08/2006 16:35:19

WHERE ([Dossier].[NatureGlobaleTravauxAEP] = '" & test & "')"
si tu n'englobe pas le test dans les () ca ne sert a rien

signaler à un administrateur
Commentaire de apaulux le 31/01/2007 18:01:18

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)

signaler à un administrateur
Commentaire de apaulux le 31/01/2007 18:04: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)

signaler à un administrateur
Commentaire de hippo92210b le 12/02/2007 11:33:47

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."

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.