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 :

IBQuery et Filter


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 150
    Par défaut IBQuery et Filter
    Bonjour à tous,

    J'ai un datamodule avec un IBQuery qui effectue un ordre SELECT sur plusieurs champs avec un ORDER BY sur un champ T_PAT_NOM et une fiche avec un DBGRid qui affiche le résultat de IBQuery

    Comme cette requete renvoie plus de 200 noms je voudrais filtrer le résultat en utilisant l'évènement onChange d'un TEdit. Mais rien ne marche.
    J'utilise D7 + Firebird 2.0

    Voici le code de l'événement onChange que j'ai trouvé sur le forum mais pas d'effet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TF_GESTION_DOSSIER.Edit1Change(Sender: TObject);
    begin
     if (Length(Edit1.Text) > 0) then
        begin
          DM_2.Q_DOS_1.Filter := 'T_PAT_NOM = ' + QuotedStr (Edit1.Text + '*') ;
          DM_2.Q_DOS_1.Filtered := True;
        end
      else
        begin
          DM_2.Q_DOS_1.Filtered := False;
        end;
    end;

    J'ai essayé par l'évènement Onfilter de l'IBQuery avec le code suivant mais la DBGrid se vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Accept := DataSet['T_PAT_NOM'] = F_GESTION_DOSSIER.Edit1.Text;
    Ou est l'erreur ?

    D'avance merci

    Mirmillon

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Avec la propriété filter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      DM_2.Q_DOS_1.Filter := 'T_PAT_NOM LIKE ' + QuotedStr (Edit1.Text + '%') ;
    Ou dans l'evènement OnFilterRecord, il faut que tu compare les 1° caractères du champ avec la contenu du TEdit.
    Dans ton exemple cela donne a peut près cette condition 'EXEMPLE' = 'EX'. Pas bon.

    @+ Claudius

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 150
    Par défaut
    Bonjour,

    Merci pour ta réponse. Pour Filter ça ne marche toujours pas, il s'agit d'une requete sur deux tables.


    Et le OnFilterRecord j'avoue ne pas comprendre.

    Mirmillon

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Essaye ceci dans OnFilterRecord:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
      S: string;
    begin
      S := Copy(DataSet.FieldByName('T_PAT_NOM').AsString, 1, Length(Edit1.Text));
      Accept := CompareText(Edit1.Text, S) = 0;
    end;
    @+

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 150
    Par défaut
    Claudius,

    Merci pour ton aide. La piste est bonne ça filtre mais uniquement sur la première lettre ce qui est déjà pas mal. Je vais étudier le code pour filtrer sur plusieurs lettres.

    Merci encore.

    Mirmillon

  6. #6
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Citation Envoyé par Mirmillon Voir le message
    a piste est bonne ça filtre mais uniquement sur la première lettre ce qui est déjà pas mal.
    Le code que je t'ai proposé est censé filtrer sur la ou les lettres saisies dans le TEdit.

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

Discussions similaires

  1. INSO Filter : "USER-defined exception" avec ctx_do
    Par Wiztiti dans le forum Oracle
    Réponses: 2
    Dernier message: 01/06/2004, 16h14
  2. Pb IBQuery (debutant)
    Par manplum dans le forum C++Builder
    Réponses: 8
    Dernier message: 31/03/2004, 16h56
  3. propriete filtered
    Par crocodingo dans le forum Bases de données
    Réponses: 9
    Dernier message: 15/02/2004, 20h08
  4. requete avec ibquery 'colonne inconnue'???
    Par mvg dans le forum InterBase
    Réponses: 2
    Dernier message: 01/02/2004, 17h45
  5. CFileDialog Filter
    Par Patrick Beaudoin dans le forum MFC
    Réponses: 4
    Dernier message: 07/09/2002, 09h51

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