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

C++Builder Discussion :

filter sur un DBGrid


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut filter sur un DBGrid
    Salut mes amis
    j'aimerais réaliser un filtre à partir d'un champ Edit sur mon dataset relié à un DBGrid. J'aimerais par exemple que si je tape la lettre s dans mon Edit, que seul les contacts commençant par la lettre s s'affichent...

    Merci de votre aide

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Il faut gérer ca dans ton TDataset relié a on DBGRid, si c'est un TQuery un truc du genre fera l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Query->Active = false ;
    Query->SQL->Clear() ;
    Query->SQL->Add( "SELECT * FROM nom_de_ta_table" ) ;
    Query->SQL->Add( "WHERE nom_champ_a_filtrer like " + QuotedStr( Edit1->Text + "%" ));
    Query->Active = true;
    Tu peux par exemple placer ce code dans l'événement OnChange de ton TEdit, et ton DBGrid sera automatiquement raffraichit a chaque modification du Edit.
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Bonjour
    merci Sat83
    j' ai essaye le code que vous m'avez donné ;mais lorsque je tape une lettre dans mon edit les noms du contact ne s'affichent pas sur le DBGrid
    je vous prie de m'aider

  4. #4
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Citation Envoyé par zhor31 Voir le message
    Bonjour
    merci Sat83
    j' ai essaye le code que vous m'avez donné ;mais lorsque je tape une lettre dans mon edit les noms du contact ne s'affichent pas sur le DBGrid
    je vous prie de m'aider
    - Ton TQuery est bien relié a ton DBGrid (via un TDataSource)?
    - Tu a bien placer le code dans le OnChange de ton Edit?
    - Est ce que tu as une erreur? Ou alors ton code s'execute mais ne retourne aucun résultat?
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Oui mon Query est relié a mon DBGrid
    le code s'éxecute mais aucun résultat

  6. #6
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Est tu sûr que ta table contient des données commençant par les lettres que tu tape dans ton Edit?
    Attention au minuscule/majuscule qui sont importante!

    Poste ton bout de code pour y voir plus clair...
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    J'ai posé un Dbgrid ,Table,Query,Datasource et j 'ai relier le DBGrid au Datasource ....
    il m'a affiché le contenu de ma table puis dans l'evenement OnChange j 'ai taper le bout de code que tu m'a donné c'est ce que j'ai fait
    Est ce qu'il n'existe pas une option dans DBGrid qui permet de lister a chaque frappe ?

  8. #8
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Est-ce que ton TDataSource est relié a ton TTable ou a ton TQuery?
    Dans le cas ou tu utilise un TQuery, tu n'a plus besoin du composant TTable.

    Le composant DBGrid est un composant qui permet d'afficher des donnée, il ne sait rien faire d'autre. Il faut travailler sur le composant TDataSet (TTable, TQuery, etc...) pour modifier les donnée qui sont affichée dans le DBGrid.

    Donc pour revenir a un exemple simple :
    - Sur ta fiche tu place un TEdit, un TQuery, un TDataSource et un TDBGrid.
    - la propriété DataSet de ton DataSource tu met Query1
    - la propriété DataSource de ton DBGrid tu met DataSource1

    Ensuite dans le OnChange de ton TEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TForm1::Edit1Change(TObject *Sender)
    {
      Query->Active = false ;
      Query->SQL->Clear() ;
      Query->SQL->Add( "SELECT * FROM nom_de_ta_table" ) ;
      Query->SQL->Add( "WHERE nom_champ_a_filtrer like " + QuotedStr(Edit1->Text + "%" ));
      Query->Active = true;
    }
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup sat83
    Je suis débutante est je fais confusion entre les composants,tu as vraiment m'aider donc pour afficher le contenu de ma table il faut aussi passer avec Query et Datasource ?

    Merci encore une fois

  10. #10
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Oui, Tu peux utiliser le même TQuery, il suffit de changer la requête SQL:

    Pour afficher toute la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Query->Active = false ;
      Query->SQL->Clear() ;
      Query->SQL->Add( "SELECT * FROM nom_de_ta_table" ) ;
      Query->Active = true;
    Ensuite en modifiant ta requete SQL tu peux par exemple:

    Sélectionner juste certains champs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Query->Active = false ;
      Query->SQL->Clear() ;
      Query->SQL->Add( "SELECT NomChamp1, NomChamp2 FROM nom_de_ta_table" ) ;
      Query->Active = true;
    Trier les résultat selon un champ (ORDER BY):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Query->Active = false ;
      Query->SQL->Clear() ;
      Query->SQL->Add( "SELECT NomChamp1, NomChamp2 FROM nom_de_ta_table" ) ;
      Query->SQL->Add( "ORDER BY NomChamp1" ) ;
      Query->Active = true;
    Effectuer des filtres sur les résultats (WHERE):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Query->Active = false ;
      Query->SQL->Clear() ;
      Query->SQL->Add( "SELECT NomChamp1, NomChamp2 FROM nom_de_ta_table" ) ;
      Query->SQL->Add( "WHERE NomChamp1 > 15" ) ;
      Query->SQL->Add( "AND NomChamp2 like  '%BLABLA%" ) ;
      Query->Active = true;
    etc...

    Ensuite il suffit de te connaitre les bases du SQL pour customiser tes requêtes et obtenir exactement le résultat souhaité.
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Vous m'avez vraiment soulagé ,je vous remercie de tout coeur

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

Discussions similaires

  1. Simuler un appui sur un DBGrid
    Par maw dans le forum C++Builder
    Réponses: 9
    Dernier message: 25/10/2005, 09h45
  2. Problème avec OnDrawColumnCell sur un DBGrid
    Par n1portki dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/09/2005, 04h18
  3. Faire un filtre sur un DBGRID
    Par richard038 dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/08/2005, 17h18
  4. Comportement anormal de la tabulation sur une DBGrid
    Par fredfred dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/05/2005, 13h23
  5. ecrire sur un dbgrid ??
    Par nil dans le forum Bases de données
    Réponses: 8
    Dernier message: 21/04/2004, 22h40

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