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 :

[ADO] Savoir si un filtre est appliqué


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Points : 77
    Points
    77
    Par défaut [ADO] Savoir si un filtre est appliqué
    Bonjour à vous tous.

    Voici ma question : existe-t-il un moyen de savoir si un ensemble de données est filtré. Autrement dit, si dans un dbGrid, tous les enregistrements de ma table sont afffichés ou seulement une partie d'entre eux ?

    En pratique, j'ai un TreeView que je voudrais désactiver pendant le filtre et n'activer que si tous les enregistrements sont affichés dans mon dbGrid.

    Merci de vous pencher sur mon problème.

    dleu

    ɹəᴉpᴉp

  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,

    essayes ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If DBGrid1.DataSource.DataSet.Filtered then showmessage('Ma DataSet est filtrée')
      Else showmessage('Ma DataSet n''est pas filtrée');
    @ plus
    Tant de mains pour transformer ce monde, et si peu de regards pour le contempler !
    (Julien Gracq)

  3. #3
    Membre régulier Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Points : 77
    Points
    77
    Par défaut
    Ca ne marche pas : dans tous les cas il me dit qu'elle n'est pas filtrée.

    ɹəᴉpᴉp

  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
    Chez moi cela fonctionne tres bien, je viens de tester.
    Par contre tu peux aussi tester la propriété filter, si c'est une chaine vide et que filtered est a true ... ta dataset n'est pas filtrée.
    Comment tu t'y prends pour filtrer tes données ?
    donnes au besoin un morceau de code pour que l'on puisse t'aider.

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

  5. #5
    Membre régulier Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Points : 77
    Points
    77
    Par défaut
    Peut-être je m'y prends mal : je change la propriété SQL de mon composant ADOQuery1. Je fais ensuite un AdoQuery1.Open?

    Ce n'est pas ça ?

    ɹəᴉpᴉp

  6. #6
    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,
    En filtrant directement dans ton SQL, tu n'as aucune façon de savoir si ton ensemble de données est filtré parce que ton ensemble de données est deja ce qu'il est !
    Maintenant tu veux filtrer et etre capable de determiner quand ta DataSet est ou non filtrée, je te conseille de faire une requete SQL non filtrée et d'appliquer un filtre dessus grace aux propriétés :
    ADOQuery.filter(String) et ADOQuery.Filtered(boolean).

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

  7. #7
    Membre régulier Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Points : 77
    Points
    77
    Par défaut
    Merci de ta réponse Bidochon, et de ton aide.

    J'ai appliqué ta méthode qui au demeurant me paraît être excellente, mais j'ai un problème avec la négation. Voir mon autre post dans ce forum.

    ɹəᴉpᴉp

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par dleu
    Peut-être je m'y prends mal : je change la propriété SQL de mon composant ADOQuery1. Je fais ensuite un AdoQuery1.Open?

    Ce n'est pas ça ?
    Si tu utilises un TADOQuery en lui spécifiant la requête qui va déterminer l'ensemble de résultats qui va ensuite être affiché dans ton dbGrid, il te suffirait de tester la présence de la clause WHERE dans la propriété SQL de ton TADOQuery.
    Attention cela peut fonctionner avec des requêtes relativement simples.

    Cordialement
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  9. #9
    Membre régulier Avatar de dleu
    Profil pro
    Inscrit en
    Août 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 169
    Points : 77
    Points
    77
    Par défaut
    Merci Pascal,

    Je crois effectivement que c'est la méthode que tu préconises qui est la plus simple. Je l'ai testée et elle fonctionne parfaitement.

    ɹəᴉpᴉp

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/06/2014, 21h57
  2. Réponses: 2
    Dernier message: 05/07/2013, 16h06
  3. [AC-2003] Doublons qui disparaissent en appliquant un filtre "Est pas Nul"
    Par L'Albatros dans le forum Modélisation
    Réponses: 5
    Dernier message: 11/06/2012, 18h04
  4. Réponses: 4
    Dernier message: 20/05/2007, 17h58
  5. Savoir si un ADODataset est filtré
    Par pascalT dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/04/2005, 15h16

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