IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Apostrophe dans une requête SQL [WD17]


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut Apostrophe dans une requête SQL
    Bonjour,

    J'ai un problème avec mes requêtes SQL car si ma chaîne contient un apostrophe, cela ne marche pas car l'apostrophe est un délimiteur.

    J' ai placé le code suivant qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Commentaire2 = Remplace(SAI_Commentaire2, "'","''")
     
    	SQLExec("UPDATE clients set COMMENT= '"+SAI_Commentaire2+"' WHERE NUMDOSSIER= '"+FEN_LstClients.N_DE_DOSSIER+"'","req1")
    	SQLInfoGene("req1")
    	Info("Erreur SQL : " + SQL.MesErreur)
    	SQLFerme("req1")
    	SQLDéconnecte()
    Etant donné que mon projet contient une centaine de champs de saisie, n'existe-t-il pas un moyen d'éviter de faire un "Remplace" pour chacun de mes champs ?

    A titre d'info, j'utilise MySQL.

    Merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    2 choix s'offre à toi mais dans les 2 cas, il faudra reprendre l'ensemble des requêtes :

    1 - Gestion au niveau de la requête : REPLACE(maVariable,"'","''")
    2 - gestion au niveau de Windev : tu sais déjà

    à bientôt,

    Nicolas

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    bonjour,

    Merci pour ta réponse, mais "Replace" tu l'utilises comment dans mon code?

  4. #4
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Bonjour

    Tu peux faire une surcharge de la fonction SQLExec et y faire tes Remplace

    Je dis bien "tes" car tu auras aussi d'autres caractères qu'il faudra remplacer, par exemple le \ par \\ (voir cette page)

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 869
    Points
    12 869
    Par défaut
    Bonjour,
    Citation Envoyé par hpascal Voir le message
    Bonjour

    Tu peux faire une surcharge de la fonction SQLExec et y faire tes Remplace

    Je dis bien "tes" car tu auras aussi d'autres caractères qu'il faudra remplacer, par exemple le \ par \\ (voir cette page)
    Ca risque d'être compliqué, car toutes les cotes ne doivent pas être doublées, mais uniquement celles qui sont dans une chaine de caractères.

    Tatayo.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    Effectivement il n'y a pas que des chaines.

    Il n'y a pas d'autre solution que de reprendre chaque variable soit avec Remplace, soit avec Replace ?

    Sauf erreur de ma part, pour remplace et replace, je pense qu'il vaut mieux utiliser remplace car cela évite de surcharger les requêtes SQL et limiter ainsi les risques d'erreur.

    S'il y a une autre solution plus rapide à coder, je suis preneur.

    Merci d'avance.

  7. #7
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Ca risque d'être compliqué, car toutes les cotes ne doivent pas être doublées, mais uniquement celles qui sont dans une chaine de caractères.
    Tatayo.
    Ben oui, tu as totalement raison tatayo, j'ai répondu un peu vite, il faudrait parser la requête complète et c'est assez compliqué

    En fait moi je passe par une fonction de formatage de chaine du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sValeur est une chaîne
    sRequete est une chaîne = [
    UPDATE matable SET mazone = %1
    WHERE ...
    ]
     
    sValeur = "Ma chaîne avec des ' des \"
    sRequete = ChaîneConstruit(sRequete, PG_SQL_Formate(sValeur))
    La fonction PG_SQL_Formate remplace les caractères spéciaux (selon la base de données) et entoure la chaîne avec des quotes

    Mais dans ton cas ça t'oblige à repasser partout, pas mieux désolé ...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Bon ben vu que je comprends rien aux fonctions, je vais faire avec "remplace".

    Puisqu'il n'y a pas mieux, je pense que le sujet est résolu.

    Merci beaucoup pour votre aide.

    A bientôt.

  9. #9
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 379
    Points : 4 496
    Points
    4 496
    Par défaut
    Heu ... franchement les fonctions c'est un peu la base de la programmation

    Si tu dois faire une modification au niveau des Remplace tu ne le feras qu'une fois dans la fonction
    Sans fonction tu devras repasser partout à la moindre modification

    Regarde dans l'aide ou le manuel le principe des procédures et fonctions

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Ca y est, j'ai compris.

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec l'apostrophe dans une requête
    Par mika0102 dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/03/2019, 16h51
  2. Réponses: 3
    Dernier message: 04/01/2009, 21h21
  3. Plusieurs jointures dans une requête sql
    Par Pero dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 20h59
  4. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 18h02
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo