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 :

afficher les resultats du DBgrid dans un Edit


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut afficher les resultats du DBgrid dans un Edit
    Bonjour à tous!
    j'ai deux DBGrid liés à deux tables, l'un en maître et l'autre en esclave. Le premier qui est en maitre contient les noms des personnes et l'autre qui est en esclave contient les details , et parmi ces details il y a un champs appelé Salaire.
    j'ai un edit dans lequel je voudrais afficher le total des salaires de chaque personne lorsque je passe d'une personne à l'autre.
    Je voudrais savoir dans quel evenement du DBgrid ou de l'Edit je dois inserrer le code pour calculer le total des salaires.
    Merci pour votre aide.

  2. #2
    atb
    atb est déconnecté
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Autre

    Informations forums :
    Inscription : Novembre 2004
    Messages : 639
    Points : 929
    Points
    929
    Par défaut
    Bonjour , ma solution à moi c'est de créer un champ somme comme suit :
    sur le dataset (chez moi le clientdataset) j'ajoute un nouveau champ de type statistic dans l'inspecteur , je rempli experssion avec par exemple sum(salaire); salaire etant un champ du dataset , donc j'ai un champ qui se calcul automatiquement ,et que je peux utilser dans dbedit ,dblabel ou dbgrid , à voir avec le type de ton ensemble de donnée !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    excusez moi , mais je ne comprends pas bien ce que vous dites, et je ne vois pas comment je peux faire cela , comment le champs que j'ajouterai pourra calculer automatiquement la somme des salaires de chaque personne .
    Expliquez moi d'avantage svp , si possible même avec des ecrans.
    Merci

  4. #4
    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
    Essayez ceci :


    Dans l'evnt AfterScroll de la table Maitre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TableDetail.DisableControls;
    // insérer votre code ici ...
    TableDetail.First;
    TableDetail.EnableControls;

  5. #5
    atb
    atb est déconnecté
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Autre

    Informations forums :
    Inscription : Novembre 2004
    Messages : 639
    Points : 929
    Points
    929
    Par défaut
    bonjour , j'ai quelque capture d'écran ,j'utilise un clientdataset ,je te conseil de creuser un peu la piste des champs agregats que tu peux exploiter pour ce genre d'operation .

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    Merci bcp atb , c'est vraiment clair, merci pour ta piste.

  7. #7
    atb
    atb est déconnecté
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Autre

    Informations forums :
    Inscription : Novembre 2004
    Messages : 639
    Points : 929
    Points
    929
    Par défaut
    De rien , bonne programmation

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    bonjour! excuser moi parce que j'ai retiré resolu sur la discution à cause d'un problème .
    La solution que atb a proposé est bonne , mais ici je ne veux pas creer un nouveau champs , mais je veux seulement avoir dans mon TEdit la somme des salaires d'un employé lorsque je clique sur cet employé avec ma souris . Je rappelle que je travaille avec deux tables, l'un en maitre (Personne) et l'autre en esclave (DetailPerson) qui contient le champs Salaire sur lequel je fais mon calcul.
    Les donnees des deux tables sont dans des DBgrid.
    j'ai mis mon code dans l'evenement DblClick du DBgrid de la table maitre (personne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TGestionForm.DBGrid8DblClick(Sender: TObject);
    var nTotalS:variant;
    begin
        nTotalS:=0;
        while not DM.tbDetailPerson.Eof do
      begin   
        nTotalS:=nTotalS + DM.tbDetailPersonSalaire.Value;
      end;
       DM.tbDetailPerson.Next;
       EditSalaire.Text:=nTotalS;
     
    end;
    mais mon code ne fonctionne pas, je sais que j'ai fait des erreurs mais je vois lesquelles, je ne sais pas si c'est niveau de l'evenement .
    j'ai cherché l'evenement Onclick du DBgrid , mais il n'existe pas , j'ai pris DBClick, et lorsque je clique deux fois sur l'employé dans le DBgrid , le programme plante , et plus rien qui marche.
    je ne vois pas l'erreur.
    Merci de m'aider

  9. #9
    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 ,

    j'en suis pas sur à 100% mais ntotals devrait être déclaré en Currency ?
    ce qui donnerait ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    editSalaire.text:=format('%3.2f',[ntotals])
    ou utilise floatstrF , ca que tu as déjà demandé sur ce forum
    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

  10. #10
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    le next etait hors de la boucle!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TGestionForm.DBGrid8DblClick(Sender: TObject);
    var nTotalS:variant;
    begin
        nTotalS:=0;
        while not DM.tbDetailPerson.Eof do
      begin   
        nTotalS:=nTotalS + DM.tbDetailPersonSalaire.Value;
       DM.tbDetailPerson.Next;
      end;
       EditSalaire.Text:=nTotalS; 
    end;
    à plus

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    Merci Banban54, c'est vrai j'avais mis le next hors de la boucle. maintenant ça marche.
    Je voudrais savoir une autre chose , je voudrais cliquer une fois l'employé et voir la somme des salaires , sans faire le double click , je ne sais pas s'il y a un evenement qui permet de faire cela.
    Merci

  12. #12
    atb
    atb est déconnecté
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Autre

    Informations forums :
    Inscription : Novembre 2004
    Messages : 639
    Points : 929
    Points
    929
    Par défaut
    Bonjour ,
    tu peux toujour utiliser OnCellClick

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    merci atb, ça marche!

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

Discussions similaires

  1. [Python 3.X] Afficher les resultat dun hashage dans une ENTRY
    Par clododil dans le forum Tkinter
    Réponses: 0
    Dernier message: 20/05/2015, 17h02
  2. afficher les resultats de recherche dans la meme page.
    Par geeksDeve dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/04/2012, 03h09
  3. Réponses: 1
    Dernier message: 12/02/2008, 17h14
  4. Afficher les resultat d'un code (matrice) dans l'interface
    Par Alucard9800XT dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 06/06/2007, 09h31
  5. Réponses: 5
    Dernier message: 27/04/2007, 15h06

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