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 :

Bloquer saisie simple quote [WD14]


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 71
    Points : 55
    Points
    55
    Par défaut Bloquer saisie simple quote
    Bonjour,

    J'aimerai dans un champ de saisie bloquer la saisie du simple quote.
    En effet pendant la saisie une recherche est effectué sur une base sql en prenant comme recherche la saisie, la simple quote étant un caractère spécial cela met le logiciel en erreur.

    J'ai essayé plusieurs approche via la fonction toucheenfoncée mais sans succès.
    Voici le code testé juste avant la requete sql.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI ToucheEnfoncée(39) = Vrai ALORS 
    	RETOUR
    FIN
    J'ai placé ce code pendant la modification de la saisie, rien n'y fait.
    Je l'ai placé dans un événement Key Down (WM_CHAR), même rengaine cela ne fonctionne pas.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il ne faut pas faire appel à la fonction wlangage ToucheEnfoncée, mais à _eve.wparam, quand l'utilisateur presse la touche du quote, il faut voir ce que renvoie _eve.wparam
    Ce code doit être mis dans l'événement Touche enfoncée (WM_KEYDOWN) de XXXX

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    En bloquant la saisie de simple-quote, tu contournes le problème. Tu peux résoudre le problème à la source, et donc laisser l'utilisateur saisir ce qu'il veut.

    Actuellement, dans le pavé "A chaque modification de saisie1", tu as un code qui ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sreq est une chaine
    sReq = "select * from matable where col_texte = '" + saisie1 + "'"
    // Exécution de cette requête.
    Tu peux créer une procédure qu'on va appeler entoure_quote :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    FONCTION entoure_quote(sCh, qu = "'")
     
    // 1. Double les apostrophes dans la chaine 
    // 2. Entoure avec des apostrophes
     
    // 1. double les apostrophes
    ch est une chaîne=Remplace(pCh, qu , qu + qu  )
     
    // 1bis. il faut au moins un espace
    SI ch="" ALORS ch=" "
     
    // 2. retourne la chaine corrigée avec les apostrophes
    RENVOYER qu +ch+qu
    Et dans le pavé "A chaque modification", tu vas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sreq est une chaine
    sReq = "select * from matable where col_texte = " + entoure_quote( saisie1)
    // Exécution de cette requête.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Février 2014
    Messages : 71
    Points : 55
    Points
    55
    Par défaut
    Merci de votre retour très rapide.

    Le problème de traiter le simple quote dans la requête SQL c'est que le simple quote reste présent dans le champ de saisie, chose que je ne voulais pas.

    J'ai trouvé une solution de mon coté avant de voir qu'on m'avait déjà répondu ^^

    Voici le code que j'ai appliqué dans la zone modification du champ de saisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SI ToucheEnfoncée(52) = Vrai ALORS 
    EDT_Recherche = Remplace(EDT_Recherche,"'"," ")
    EDT_Recherche..Curseur = Taille(EDT_Recherche) + 1
    FIN
    On détecte si la touche combiné 4+'+{ est appuyée, si oui on remplace le simple quote par un espace (ce qui permet en même temps de ne pas bloquer sa saisie) et on se positionne à la fin du champ de saisie (le curseur se place en début de saisie par défaut sinon).

    On pourrait récupérer la position du curseur pour le positionner à son emplacement actuel plutot que de le mettre à la fin, mais il est rare de se positionner au milieu d'un champ pour mettre un simple quote sachant qu'il ne sera pas traité.

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

Discussions similaires

  1. [Tableaux] souci avec des simples quotes
    Par Jean Fi dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 20h13
  2. bloquer saisie d une textarea
    Par jeanPaul dans le forum Général JavaScript
    Réponses: 30
    Dernier message: 07/03/2006, 10h34
  3. [MySQL] transformer une simple quote en double pour un insert !!
    Par st0nky dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/01/2006, 16h38
  4. [text] probleme avec simple quote
    Par bor1s dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/12/2005, 16h03
  5. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16

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