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

Bases de données Delphi Discussion :

Substitution de caractere


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2004
    Messages : 85
    Points : 39
    Points
    39
    Par défaut Substitution de caractere
    Salut a tous,

    Je fait une recherche dans un base de donnée Ms Access avec une requète SQL
    Adoquery.

    Voici le Code de ma recherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Procedure TprogCNS.Findclick(Sender: TObject);
    begin
       if Recherche.text <> '' then
       begin
       Sqlsearch := 'SELECT * FROM Ca_Qc WHERE (Villes LIKE : Search)';
       Adoquery.Close;
          With ADOquery.SQL do begin
          Clear;
          Add(SqlSearch);
          end;
    Adoquery.Parameters.ParamByName('Search').Value := '%'+Recherche.text+'%';
    Adoquery.Open;
       end;
    end;
    Voila a partir de la je voudrais faire un subtitution de caractere..
    je veux dire : quand j'entre mon text pour faire ma recherche je voudrais que le programme ne tienne pas compte des accents lors de la recherche.

    Ex: je veut chercher une ville qui s'appelle Saint-Jérome, donc dans ma recherche j'entre seulement 'Jerome' et je voudrais que le programme me retourne Saint-Jérome avec un accent même si je ne l'ai pas écrit dans ma recherche. Avec le Code si haut si je veux trouver cette Ville je dois l'écrire abosulument avec le 'é'.

    Merci

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Bonjour,

    Il existe plusieurs solutions.
    La première est simple : il s'agit de faire ta recherche en majuscule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Procedure TprogCNS.Findclick(Sender: TObject);
    begin
       if Recherche.text <> '' then
       begin
        Sqlsearch := 'SELECT * FROM Ca_Qc WHERE (Upper(Villes) LIKE :Search)';
        Adoquery.Close;
          With ADOquery.SQL do begin
          Clear;
          Add(SqlSearch);
          end;
        Adoquery.Parameters.ParamByName('Search').Value := '%'+Uppercase(Recherche.text)+'%';
        Adoquery.Open;
       end;
    end;
    La seconde est plus élaborée; il faut ajouter un champ à ta base VILLE_RECHERCHE puis une fonction ou procédure stockée qui, sur les triggers d'insertion et de modification, "adaptera" la saisie de ville en ville_recherche. Cette foonction convertira les caractères pour supprimer les caractères qui faussent ta recherche tels que l'apostrophes, les espaces, les accentués...

    Cela pose le problème du volume de donnée. En effet si tu dois faire cela pour les champs adresses, villes, nom, etc....

    Alors il y a encore une autre solution qui consiste à faire comme pour la seconde solution une fonction de transformation et de l'appeler dans ton select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Procedure TprogCNS.Findclick(Sender: TObject);
    begin
       if Recherche.text <> '' then
       begin
        Sqlsearch := 'SELECT * FROM Ca_Qc WHERE (TransForm_Sql(Villes) LIKE :Search)';
        Adoquery.Close;
          With ADOquery.SQL do begin
          Clear;
          Add(SqlSearch);
          end;
        Adoquery.Parameters.ParamByName('Search').Value := '%'+TransForm_Delphi(Recherche.text)+'%';
        Adoquery.Open;
       end;
    end;
    
    C'est vous qui voyez !
    
    Le choix dépend de la faisabilité (SGBD) des volumes de données et du besoin.
    
    a+
    a+
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

Discussions similaires

  1. substitution de chaîne de caracteres
    Par shaun_the_sheep dans le forum C#
    Réponses: 6
    Dernier message: 12/12/2012, 10h11
  2. Pb substitution chaine de caractere (regex)
    Par slackuser dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2009, 14h38
  3. probleme de substitution et meta-caractere
    Par zonttt dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2009, 10h28
  4. substitution d'un motifs par le meme nombre de caracteres
    Par crochepatte dans le forum Bioinformatique
    Réponses: 7
    Dernier message: 26/01/2007, 16h43
  5. [langage] substitution de caractère
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2003, 07h47

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