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 :

Recherche sur mots de 3 lettres


Sujet :

Bases de données Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Recherche sur mots de 3 lettres
    Bonjour,
    Connaissant encore un peu mal les fonctions Delphi, pourriez vous me dire comment faire une recherche dans ma base de données paradoxe de mots commençant par "A" par exemple et ne contenant QUE 3 Lettres ?
    Merci

    Pour l'instant j'ai ceci qui me donne tous les mots commençant par A. Par quoi remplacer "*" pour limiter à "A##", "#" étant une lettre quelquonque ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    begin
    Filtrea := 'code =''' + 'A' + '*''';
    table1.filter :=filtrea;
    table1.filtered := true;
    end;

  2. #2
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut
    Salut,
    je ne pense pas que ce soit possible en utilisant des caracteres generiques comme *, # ou autre.
    Tu devrais regarder a faire toi meme la condition de filtre en utilisant l'evenement OnFilterRecord

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedureTForm1.DataSetFilterRecord(DataSet:TDataSet;
    varAccept:Boolean);
    begin
    Accept := False;
    If Length(Dataset.FieldByName('MonChamp').asString)=3 then
      Accept := true;
    end;
    enfin regarde dans l'aide de Dephi pour en savoir plus
    @ plus
    et bon dev
    Tant de mains pour transformer ce monde, et si peu de regards pour le contempler !
    (Julien Gracq)

  3. #3
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Je suis de l'avis de bidochon sauf qu'il a oublié la condition "la première lettre doit être A"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedureTForm1.DataSetFilterRecord(DataSet:TDataSet;
    varAccept:Boolean);
    var Val : string;
    begin
    Accept := False;
    Val := Dataset.FieldByName('MonChamp').asString;
    If (Val[1]='A' and Length(Val)=3) then
      Accept := true;
    end;
    A+

  4. #4
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut
    Désolé c'est pour l'exemple, la forme scolaire
    Ceci dit, King, tu as oublié des parentheses dans ton If et le compilateur marque une erreur.
    Voila un code qui est optimisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var Val : string; //en globale pour eviter d'allouer et desallouer
    ...
    procedureTForm1.DataSetFilterRecord(DataSet:TDataSet; 
    varAccept:Boolean); 
    begin 
    Val := Dataset.FieldByName('MonChamp').asString; 
    Accept:=(Val[1]='A') and (Length(Val)=3);
    end;
    @ plus
    Tant de mains pour transformer ce monde, et si peu de regards pour le contempler !
    (Julien Gracq)

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 317
    Points : 183
    Points
    183
    Par défaut
    et pourquoi pas un 'a??" , ou ? est comme *, mais ne correspond qu'a un seul caractère.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci, j'ai compris le principe booléen, mais pas le principe du datasetfilterrecord.
    J'ai ma procedure ci dessous pour le click sur le bouton et en plus une 2ème procedure à l'intérieure de celle ci ?
    Quelle boite de contrôle dois je rajouter sur ma conception?
    Oui j'avoue j'ai bcp de mal à saisir ces histoires de base de données, je me sens un peu crétin, mais je vous assure je fais bcp d'efforts...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm2.Button1Click(Sender: TObject);
    var Val : string; //en globale pour eviter d'allouer et desallouer 
    procedureTForm2.DataSetFilterRecord(DataSet:TDataSet; 
    varAccept:Boolean); 
    begin 
    Val := Dataset.FieldByName('code').asString; 
    Accept:=(Val[1]='A') and (Length(Val)=3); 
    end;

  7. #7
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut
    Salut,
    Pour utiliser l'evenement OnFilterRecord correctement tu dois cliquer sur ton objet Table et dans l'inspecteur d'objet, onglet evenement, tu dois doublecliquer sur OnFilterRecord. Delphi te genere le code d'appel a cet evenement, mais il n'est aucunement contenu dans le OnClick d'un bouton.
    L'evenement OnFilterRecord est apellé à chaque fois qu'un enregistrement de ta table devient l'enregistrement actif alors que le filtrage est activé (filtered := true).
    En pratique, tu ecris dans cet evenement les conditions de filtrage un peu particulieres (comment par A et ne contenant que 3 caracteres...)

    @ plus
    Tant de mains pour transformer ce monde, et si peu de regards pour le contempler !
    (Julien Gracq)

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Chouette...
    Ahhhh voilà....je commence à comprendre mieux....
    Merci pour les infos.

    J'ai une sacré gymnastique d'esprit à faire, et comme j'ai la version limité à 30 jours, il me reste 15 jours pour finir à bien ma conversion de ma BDD, mais j'avoue que DELPHI à de quoi séduire le plus dure étant pour moi de trouver parfois des expressions très simple dans un envirronnement compliqué, malgrés mon livre d'aide de campus press et autres tutoriaux de ce site ce n'est pas toujours facile de trouver la syntaxe exacte et de l'appliquer.

    Disons qu'il me manques qq bases (je l'avoue volontier), mais faut bien savoir se mouiller à un moment ou à un autre pour passer de novice à initié, c'est pourquoi je trouve votre aide formidable.
    Merci encore (Je reviendrais..C'est tout vu

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

Discussions similaires

  1. Recherche sur un groupe de lettre avec LIKE
    Par nico2610 dans le forum Requêtes
    Réponses: 5
    Dernier message: 11/01/2010, 10h41
  2. Recherche sur mots-clé avec fonction ET et OU
    Par gerard101 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/01/2009, 11h51
  3. [RegEx] Recherche sur mots-clés par expression régulière
    Par zaknaou dans le forum Langage
    Réponses: 4
    Dernier message: 18/03/2008, 14h04
  4. Formulaire de recherche sur mots clés
    Par Tharsis dans le forum IHM
    Réponses: 5
    Dernier message: 25/08/2007, 00h16

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