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

 Delphi Discussion :

Filtrer une table sur deux de ses champs


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 167
    Points : 89
    Points
    89
    Par défaut Filtrer une table sur deux de ses champs
    Bonjour,

    J'ai une table Paradox tbFacture sous delphi 7 Entreprise, je veux la filtrer sur deux de ses champs:
    MontantTTC : montant en TTC.
    MontantVerse : somme des versements effectués.
    Je veux avoir tous les Enregistrements où la facture est soldée ie MontantTTC = MontantVerse.

    J'ai essayé toutes les syntaxes possibles sans succés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbFacture.Filter:='MontantTTC =MontantVerse';
    Opération non applicable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbFacture.Filter:='MontantTTC =tbFactureMontantVerse.AsString';
    tbFacture: champ 'tbFactureMontantVerse.AsString' non trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbFacture.Filter:='MontantTTC =StrToCurr(tbFactureMontantVerse.AsString);'
    tbFacture: champ 'StrToCurr' non trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbFacture.Filter:='MontantTTC =tbFacture.FieldByName(''MontantVerse'').AsString';
    tbFacture: champ 'tbFacture.FieldByName' non trouvé


    Est ce que quelqu'un peut m'indiquer le bon code.

    Merci.

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    Depuis Delphi 2, si je me souviens bien, Borland a introduit la notion du filtre mais faut le dire c'est un des maillon faible de la syntaxe de Delphi. L'utilisation d'un filtre en utilisant un TTable est comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TTable.Filter := 'Champ=' + val + ''';
    où val doit être de type chaine, donc si on reprend val depuis un edit faudrait faire un transtypage Edit1.Text.

    pour deux champs c'est la même chose sauf qu'il faut être logique donc utilisation des opérateurs booleans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TTable.Filter := 'Champ1=' + val1 + 'and ' + 'Champ2='+ val2 + '''
    pour avoir un code lisible je crois que la meilleure façon est l'utilisation de variables locales :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var
        f : string;
        val1, val2 : string;
    begin
      val1 := Edit1.Text;
      val2 := Table1ChampMatricule.AsString;
      f := 'Champ1=' + val1 + 'and ' + 'Champ2='+ val2 + ''';
      Table1.Filter := f;
      Table1.Filtered := True;
    end;
    Bien sûr se ne sont que des exemples mais le principe c'est ça. C'est pour cette raison qu'on préfère, de de loin, l'utilisation du code SQL.
    Bonne chance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  3. #3
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 167
    Points : 89
    Points
    89
    Par défaut
    merci Just-Soft pour ta réponse.

    En recherchant un peu plus j'avais déjà pose ce Pb.

    la solution m'avait été donnée par Cl@udus voir Ici http://www.developpez.net/forums/d52...mps-entre-eux/

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

Discussions similaires

  1. [WB17] Filtrer une table entre deux dates
    Par LaGhyoute dans le forum WebDev
    Réponses: 1
    Dernier message: 16/06/2014, 10h35
  2. Filtrer une Table sur une partie d'un champ
    Par megakamel dans le forum Bases de données
    Réponses: 3
    Dernier message: 30/10/2010, 23h44
  3. peut on filtrer une table sur deux champs
    Par lila23 dans le forum Débuter
    Réponses: 3
    Dernier message: 20/04/2009, 17h48
  4. Réponses: 3
    Dernier message: 23/01/2008, 15h05
  5. comment filtrer une table avec deux criteres càd 2 colonnes
    Par athmane2dz dans le forum Bases de données
    Réponses: 7
    Dernier message: 28/07/2004, 15h25

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