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 :

Requête SQL qui ne doit pas tenir compte des accents [WD19]


Sujet :

WinDev

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut Requête SQL qui ne doit pas tenir compte des accents
    Bonjour,

    J'exécute une requête SQL via HExécuteRequêteSQL()... utilisant des valeurs fournies par une fenêtre formulaire avec beaucoup de critères de recherches (nom, prénom, ...)
    Tout fonctionne bien mais les utilisateurs de l'application souhaitent que les caractères accentués ne soient pas "bloquant".
    C'est à dire, avec la saisie du prénom "Cedric" (sans accent), le "vrai" prénom "Cédric" (avec accents) s'affiche dans les résultats

    Est-ce que cela est faisable ? si oui comment !

    Merci d'avance !

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 451
    Points
    2 451
    Par défaut
    Bonjour,

    Normalement, il faut passer par une collation de type COLLATE French_CI_AI (CI_AI pour case insensitive accent insensitive)
    Je ne sais pas si HFSQL supporte cela et vous n'avez pas renseigné la base cible.

    Google devrait être votre ami.

    Bon courage

    Hemgé

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Sur Hyperfile je pense que vous allez devoir utiliser la fonction WLangage SansAccent en préfixant avec WL donc WL.SansAccent.

  4. #4
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Bonjour à vous,

    Hemgé : la base cible est HFSQL C/S et l'utilisation de COLLATE French_CI_AI ne semble pas fonctionner....
    Pour afficher le nom du client PÉZARD j'ai essayé la requête SQL suivante :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id, nom, prenom 
    FROM T_client 
    WHERE nom LIKE 'PEZ%' 
    COLLATE French_CI_AI
    Message d'erreur : Echec de l'exécution de la requête. Mot COLLATE inattendu

    michel.souris : la fonction SansAccent() ne s'utilise pas en SQL...


  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Merci de lire attentivement ma réponse je t'indique qu'il faut utiliser le préfixe WL pour utiliser les fonctions WLangage dans une requête SQL sur un base HF....

    Pour info voici la liste des fonctions SQL disponible sur Hyperfile : http://doc.pcsoft.fr/fr-FR/?2034005
    ...effectivement COLLATE n'en fait pas partie.

    Et la doc concernant les fonctions WLangage dans une requête : http://doc.pcsoft.fr/fr-FR/?1513004 (en fin de page il y a des liens vers les listes des fonctions utilisables)

  6. #6
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Citation Envoyé par michel.souris Voir le message
    Merci de lire attentivement ma réponse je t'indique qu'il faut utiliser le préfixe WL pour utiliser les fonctions WLangage dans une requête SQL sur un base HF....

    désolé je n'avais pas compris car je ne connaissais pas cette possibilité !

    Après un premier test, ça semble être OK !!!!
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id, nom, prenom 
    FROM T_client 
    WHERE WL.SansAccent(nom) LIKE 'PEZ%';
    m'affiche bien le client PÉZARD...

    Merci !

  7. #7
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    En faite, j'ai résolu un peu trop vite...
    Sous le Centre de contrôle HFSQL, la requête SQL :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id, nom, prenom 
    FROM T_client 
    WHERE WL.SansAccent(nom) LIKE 'PEZ%';
    fonctionne bien.

    Mais en programmation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sdReq est une Source de Données
    HExécuteRequêteSQL(sdReq, "SELECT id, nom, prenom FROM T_client WHERE WL.SansAccent(nom) LIKE 'PEZ%'")
    ne fonctionne pas.
    J'ai l'erreur :
    Initialisation de la requête impossible.
    Vous n'êtes pas autorisé à exécuter la fonction WLangage <SansAccent> dans une requête.


    Une idée ?

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    J'en sais rien... essaye de mettre le paramètre hSansCorrection... sinon tu fais un requête paramétrée... à voir ce qui passe...

  9. #9
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    J'ai la même erreur avec l'option hRequêteSansCorrection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sdReq est une Source de Données
    sReq est une chaine = "SELECT id, nom, prenom FROM T_client WHERE WL.SansAccent(nom) LIKE 'PEZ%'"
    HExécuteRequêteSQL(sdReq, hRequêteSansCorrection, sReq)
    ou en exécutant le fichier requête (Editeur de requêtes) avec ou sans paramètre.


  10. #10
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Outre la méthode WL.Sansaccent, il y a aussi la possibilité de définir, pour les rubriques clés (sur lesquelles on fait les recherches) la sensibilité à la casse / accent dans la base de donnée :
    Analyse, description des rubriques, onglet général : paramèter de l'index et de la recherche pour clé texte :
    Sensible à la casse, sensible à l'accentuation, sensible aux espaces, ponctuation et caractères spéciaux

    Ainsi, toutes les recherches seront homogènes en terme de résultat.

  11. #11
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Mon problème est résolu... je n'avais pas fait attention à ces options.

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

Discussions similaires

  1. Ne pas tenir compte des accents
    Par jgresse1025 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/04/2015, 11h50
  2. [Débutant] BindingSource.Filter : Ne pas tenir compte des accents
    Par noftal dans le forum VB.NET
    Réponses: 14
    Dernier message: 03/11/2013, 19h19
  3. [AC-2010] Requête sql ne pas tenir compte des espaces
    Par kawaya dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/07/2013, 10h15
  4. Ne pas tenir compte des accent dans une requete
    Par prat038 dans le forum SQL
    Réponses: 8
    Dernier message: 07/09/2009, 13h34
  5. Ne pas tenir compte des accents dans une requete
    Par zamanika dans le forum Installation
    Réponses: 8
    Dernier message: 08/11/2004, 19h49

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