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 !

DOUBLAGE DES SIMPLE QUOTE ' POUR LES CHAMPS SQL


Description

Très pratique pour l'utilisation en SQL des champs mémo. Qui doivent respecter une syntaxe particulière avec les '

 

Source

  • Public Function DoubleQuote(ByVal pValue As String) As String
  • ' On double le simple "'" dans un string pour ne pas avoir de problème
  • ' dans les Qry
  • Dim i As Integer
  • Dim s As String
  • For i = 1 To pValue.Length
  • If Mid(pValue, i, 1) = "'" Then
  • s += "''"
  • Else
  • s += Mid(pValue, i, 1)
  • End If
  • Next
  • Return s
  • End Function
    Public Function DoubleQuote(ByVal pValue As String) As String
        ' On double le simple "'" dans un string pour ne pas avoir de problème
        ' dans les Qry
        Dim i As Integer
        Dim s As String

        For i = 1 To pValue.Length
            If Mid(pValue, i, 1) = "'" Then
                s += "''"
            Else
                s += Mid(pValue, i, 1)
            End If
        Next
        Return s
    End Function

Commentaires et avis

signaler à un administrateur
Commentaire de Nix le 12/04/2004 12:13:46 administrateur CS

Salut,

En plus simple et plus rapide :

Public Function DoubleQuote(ByVal pValue As String) As String
    return pValue.Replace("'","''")
End Function

Il ne faut pas oublier que le framework est rempli de fonction comme celle-ci et surtout très optimisées.
C'est pas une critique, juste un façon plus simple de le faire ;)

signaler à un administrateur
Commentaire de michelsto le 12/04/2004 17:47:14

Exact Nix. Je n'ai pas pris cela comme une critique, et j'ai même adapté chez moi. Merci pour l'info.

signaler à un administrateur
Commentaire de jmlucienvb le 13/04/2004 11:45:57

Si on est en VBA la méthode de michelsto est intéressante car Replace n'existe pas en VBA (au moins jusqu'à 2000)

signaler à un administrateur
Commentaire de Nix le 13/04/2004 11:55:26 administrateur CS

oui sauf que sa source est une source VB.NET pas vb attention ;)

signaler à un administrateur
Commentaire de akami le 13/04/2004 12:53:09

      C'est vrai la fonction REPLACE est la meilleur.
je felicite encore michelsto pour son humilité à l'egard de Nix.

Mais Imaginez maintenant que vous n'ayez pas penser avant et que vous avez déjà ecrit environ 2000 requêtes dans votre application et que parcourir chaque requête pour placer la fonction REPLACE devient fastidieux. Alors il faut formater le texte de la requête avant de la passer à exécution.

Comment donc ecrire la fonction de formatage?

signaler à un administrateur
Commentaire de Nix le 13/04/2004 13:01:28 administrateur CS

akami, la fonction tu l'as justement
exemple :
"SELECT * FROM MaTable WHERE MonChamp = '" &  DoubleQuote(mavaleuradoublequoter) & "'"

Ca parait lourd mais c'est le seul moyen de ne pas se faire script injecter quand on fait une requete sql.

Le mieux pour eviter le script injection reste les procédures stockées avec SQL server, pas besoin de se soucier des quotes.

Tu peux essayer de faire un "analyseur" de requete sql pour parser et double quoter l'ensemble sans avoir à juste double quoter la valeur mais alors bon courrage parce que la moindre erreur dans ta fonction peut être une catastrophe. La meilleur solution reste celle-ci, avoir une fonction qui doublequote une valeur.

signaler à un administrateur
Commentaire de jmlucienvb le 13/04/2004 14:10:44

Désolé mais je vois pas ce qui_ est spécifique à .Net...dans la fonction de michelsto...
Quand à celle de Nix, effectivement return...c'est du .Net mais en vb6 on mettrait :
Public Function DoubleQuote(ByVal pValue As String) As String
    DoubleQuote=Replace(pValue,"'","''")
End Function
Ca doit marcher comme ça.
JM


signaler à un administrateur
Commentaire de Nix le 13/04/2004 14:14:18 administrateur CS

La source est indiquée comme .NET c'est pour ça que j'ai apporté mon commentaire en fonction de VB.NET

signaler à un administrateur
Commentaire de jmlucienvb le 13/04/2004 14:40:58

Ok ok...
C'est vrai que je ne suis pas encore décidé à plonger dans le .Net...
Amitiés à Nix
jmluc

signaler à un administrateur
Commentaire de michelsto le 13/04/2004 19:40:46

Mais Nix à tout à fait raison. J'ai fait cette fonction quand j'ai débuté, il n'y à d'ailleur pas très ongtemps. Et je n'ai pas réfléchi par la suite. Stupide de ma part.

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

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,328 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é.