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 :

additionné des enregistrements dans une table paradox


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 30
    Points : 24
    Points
    24
    Par défaut additionné des enregistrements dans une table paradox
    Bonjour
    Alors voila mon problème j’ai une table (Table1) qui contient un champ catégorie et montant et non et prénom
    Je veux un certain calcule tel que par exemple :
    Chercher tout les personne qui en la catégorie 13 et additionné les montant associer et afficher la somme dans un edit2 ?? Et j’ai pas sus comment faire et je veux bien un aide
    Pour afficher tout les personne qui en la catégorie 13 j’ai fait cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    table1.Filter:='Categorié='+QuotedStr(Edit1.text);
    table1.Filtered:=True;
    table1.Refresh;
    tel que edit1.text contiens la valeur 13 et il ma afficher correctement tout les enregistrement
    mai maintenant je veux faire une addition a la colonne montant de ces enregistrement et je ne c’est pas comment faire aider moi svp

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour , utilisez les Querys

    Chercher tout les personne qui en la catégorie 13
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TABLE1 WHERE CATEGORIE=:N
    Obtenir le montant TOTAL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(MONTANT) FROM TABLE1 WHERE CATEGORIE=:N
    les filtres
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Je ne comprend pas ta dent contre les filtres. Pour ma part je les utilise par exemple pour faire 2 affichages différents d'une même requête.

    Sinon pour roubase,
    Il te suffit de faire ton filtre et de parcourrir ta table et de faire les additions (First, Next, EOF, etc ..)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre actif
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Points : 227
    Points
    227
    Par défaut
    Après avoir effectuer le filtre sur la catégorie
    Tu te positionnes au début de la table avec
    ensuite, tu boucles tant qu'il existe des données correspondant à ton filtre
    et tu additionnes les valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while not maTable.EOF begin then
       Total := Total + maTable.FieldByName('Montant').asXxx;
       maTable.Next;
    end;

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Je ne comprend pas ta dent contre les filtres.
    C'est vrai qu'il ne m'en reste qu'une
    je m'explique un filtre se fait par définition sur toute une table , si celle-ci est importante (dans le cas ou la base est située sur un serveur)
    1- les délais de réponse sont important
    2- le trafic réseau est énorme
    3- dans le cas d'une grosse table rien ne dit que toutes les données ont bien été envoyées (sauf a faire un Fetchall ou équivalent , ce qui revient au point 1 et 2)

    PS . Ceci explique également des recordcounts quelquefois étonnant également

    Ces trois points (et même le PS ) je les ai largement testé et pour donner un ordre d'idée le temps de réponse était multiplié par 10 voir plus dans le cas des filtres .

    Donnons de bonnes habitudes (c'est mon coté "ancien" "prof" qui ressort) il sera plus facile ensuite de migrer vers des composants plus efficace que les TTables du BDE
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    C'est vrai qu'il ne m'en reste qu'une
    je m'explique un filtre se fait par définition sur toute une table , si celle-ci est importante (dans le cas ou la base est située sur un serveur)
    1- les délais de réponse sont important
    2- le trafic réseau est énorme
    3- dans le cas d'une grosse table rien ne dit que toutes les données ont bien été envoyées (sauf a faire un Fetchall ou équivalent , ce qui revient au point 1 et 2)

    PS . Ceci explique également des recordcounts quelquefois étonnant également

    Ces trois points (et même le PS ) je les ai largement testé et pour donner un ordre d'idée le temps de réponse était multiplié par 10 voir plus dans le cas des filtres .

    Donnons de bonnes habitudes (c'est mon coté "ancien" "prof" qui ressort) il sera plus facile ensuite de migrer vers des composants plus efficace que les TTables du BDE
    bizarre, car les filtres font normalement effet que sur le Dataset et pas sur la base de données.
    En général on charge les informations que l'on souhaite et après on passe le filtre pour n'afficher qu'une partie.
    Par exemple je le fais dans la gestion de la nomenclature du logiciel sur lequel je bosse, où d'un coté j'ai besoin d'avoir toutes les informations sur la nomenclature (Visible/Non visible par exemple) et d'un autre coté seulement l'affichage de "travail'.
    Pour éviter les temps de chargement je charge complétement la nomenclature puis je filtre ou non selon le besoin.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    A propos du filtere ...
    Je suis d'accord avec SergioMaster quand il parle de volumétrie. Ça prend du temps et ralenti le réseau. Mais quand on a rapatrié petit nombre d'enregistrements, on peut appliquer le filtre sans incidence. Dés fois le filtre est incontournable. Pour ma part, je ne l'utilise que quand c'est nécessaire.

    Pour répondre à notre ami roubase, pourquoi ne pas utiliser et le filtre et le query.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT CATEGORIE, SUM(MONTANT) AS TOTAL FROM TABLE1
    GROUP BY CATEGORIE
    et appliquer le filtre qui ne posera aucun problème.

Discussions similaires

  1. Classer des enregistrements dans une table Access
    Par midasios dans le forum VBA Access
    Réponses: 7
    Dernier message: 20/05/2008, 20h57
  2. Enregistrement dans une table paradox
    Par yendre dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/08/2007, 11h13
  3. Réponses: 12
    Dernier message: 06/08/2007, 07h46
  4. comment importer des données dans une table paradox
    Par pierrot67 dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/08/2007, 18h32
  5. [WD9] Cliquer sur des enregistrements dans une table
    Par oz80 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/12/2005, 20h11

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