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

Requêtes et SQL. Discussion :

Filtrer sans tenir compte des Accents


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Points : 68
    Points
    68
    Par défaut Filtrer sans tenir compte des Accents
    Bonjour,

    J'ai un filtre sur mon BindingSource en VB .NET 2008
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Table_OrganisateurBindingSource.Filter = "Nom LIKE %élève%"
    Il me retourne alors tous les tuples contenant "élève".

    Mais si je veux rendre mon filtre insensible aux accents ??
    Avez vous une idée ?
    Cela n'a rien avoir avec la propriété "CaseInsensitive" de la table ...

    Donc, j'aimerais pouvoir filter aussi bien des champs avec ou sans accents ..

    Merci pour le coup de "pouce"

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    tu écris une fonction auxiliaire du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Function saccent(x As String) As String
    x = Replace(x, "é", "e")
    x = Replace(x, "è", "e")
    x = Replace(x, "ù", "u")
    x = Replace(x, "ê", "e")
    saccent = x
    End Function
    dans ta requête tu remplaces select nom par select saccent(nom) as truc

  3. #3
    Membre du Club Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par random Voir le message
    tu écris une fonction auxiliaire du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Function saccent(x As String) As String
    x = Replace(x, "é", "e")
    x = Replace(x, "è", "e")
    x = Replace(x, "ù", "u")
    x = Replace(x, "ê", "e")
    saccent = x
    End Function
    dans ta requête tu remplaces select nom par select saccent(nom) as truc
    Bonjour,

    Les accents, ils sont côté BD ...
    J'ai parfois "élève", parfois "eleve" ....

    Je veux que ma recherche me retourne tous les "élève" et "eleve" ...
    Donc ne pas faire de distinction sur les accents ..

    Je pensais à faire un "Nom LIKE '%?l?ve%'" ou les ? remplace un caractère ..

    Et donc faire un REPLACE de tous les é, è, à, ï, ç, etc .... avec un ?

    Mais hier soir, cela ne donnait rien ..
    Je re-teste ce soir ..

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour


    Le caractère joker est le * pour Access et non le %.

    Je te conseille cependant d'utiliser la fonction de random, cela te permettra de l'améliorer pour d'autres choses.

    Philippe

  5. #5
    Membre du Club Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Bonjour


    Le caractère joker est le * pour Access et non le %.

    Je te conseille cependant d'utiliser la fonction de random, cela te permettra de l'améliorer pour d'autres choses.

    Philippe
    La fonction de "Random" .. MDR
    Je me demandais bien de quoi on parlait avant que je ne remarque que notre cher co-forumeur .. ne s'appelle Random.

    Je me dis, et quoi ??? générer des accents aléatoirement? dans une requête aléatoire ...
    Bien aléatoire tout ça


    Non, sérieusement (je n'ai pas le code sous les yeux, car c'est un projet du soir .. .-)
    J'ai déjà une boucle qui fait un replace de tout les accents en "?" ...

    Car évidement, remplacer les é et è par des 'e' .. cela ne m'avance à rien ..

    Si j'ai des tuples : élève, éleve, eleve ...

    Faire une recherche sur 'eleve' ne me retourne que eleve .. et pas les autres ...
    Faire une recherche sur élève .. ne me retourne que élève .. et pas les deux autres ...

    EN tout cas, c'est ce que j'observais ..

    Maintenant, faire un filtre sur "Nom LIKE '?l?ve' .. ca devrait me retourner tout ..

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    bonjour random, Philippe JOCHMANS et dsolheid,

    Citation Envoyé par dsolheid
    La fonction de "Random" .. MDR
    c'est plutot toi qui nous fait MDR dsolheid.

    Citation Envoyé par dsolheid
    Car évidement, remplacer les é et è par des 'e' .. cela ne m'avance à rien ..
    Si j'ai des tuples : élève, éleve, eleve ...
    la fonction de random te transforme élève, éleve en: eleve.
    il faut donc l'utiliser ainsi: (après avoir déclaré la fonction dans un module à part)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ... where saccent(leChamp) like "*eleve*"


    Citation Envoyé par dsolheid
    faire un filtre sur "Nom LIKE '?l?ve' .. ca devrait me retourner tout ..
    oui ca retourne aussi "olive"

    autrement tu peux aussi faire ainsi:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    leChamp like "*[ée]l[eè]ve*"

  7. #7
    Membre du Club Avatar de dsolheid
    Inscrit en
    Décembre 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Décembre 2007
    Messages : 141
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par vodiem Voir le message
    bonjour random, Philippe JOCHMANS et dsolheid,


    c'est plutot toi qui nous fait MDR dsolheid.


    la fonction de random te transforme élève, éleve en: eleve.
    il faut donc l'utiliser ainsi: (après avoir déclaré la fonction dans un module à part)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ... where saccent(leChamp) like "*eleve*"



    oui ca retourne aussi "olive"

    autrement tu peux aussi faire ainsi:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    leChamp like "*[ée]l[eè]ve*"
    Bien content de vous faire rire ..

    Bon, pour le ? c'est vrai que c'est pas top ...
    Pour
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    leChamp like "*[ée]l[eè]ve*"
    Ca me parait super !

    Il me suffit de vérifier les è é à, etc .. de tj les accompagner d'un [e..], [a..]

    Je test ça ce soir .. (je ne connaissais pas/plus [] )

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/06/2009, 11h44
  2. Réponses: 4
    Dernier message: 29/12/2008, 09h04
  3. "Filter" sur DataBinding sans tenir compte des Accents
    Par dsolheid dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/10/2008, 10h16
  4. Recherche sans tenir compte des accents
    Par killerjeff dans le forum Access
    Réponses: 6
    Dernier message: 27/01/2007, 10h19
  5. Réponses: 1
    Dernier message: 17/08/2006, 20h27

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