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

Langage Delphi Discussion :

Comment calculer la somme d'un ensemble de champs d'un dbGrid ?


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Algérie

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Comment calculer la somme d'un ensemble de champs d'un dbGrid ?
    bonjour !!
    c'est pour faire une facture, je dois calculer la somme des enregistrements du champs "prix" pour avoir le total à la fin et l'écrire dans un Tedit :
    j'ai pensé à faire un compteur qui calcule le nombre d'enregistrements puis calcule la somme, mais j'ai pas trouvé la synthaxe, j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var
    v: integer;//c'est le compteur 
    total: integer;//c'est le total ou la somme des prix
    procedure TForm10.Button1Click(Sender: TObject);
    begin
      for v:=0 to (table2.recordcount) do
      begin
        total:=total+['table1.prix_unitaire'];
        edit11.text:=inttostr(total);
      end;
    end;
    mais à la compilation j'ai eu le msg suivant :
    1- [Avertissement] Unit10.pas(111): La variable de contrôle de boucle FOR doit être une variable locale simple
    2- [Erreur] Unit10.pas(113): Type ordinal requis
    merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 104
    Points
    19 104
    Par défaut
    Le première erreur signifie que la variable doit etre locale à la procédure et non pas globale.

    La deuxième c'est que ton +['table1.prix_unitaire']; ne corresponad à rien en Delphi

    Pour quoi tu fais la somme d'un champ de Table2 alors que tu parcours Table 2 ?

    Sinon :
    - Tu Oublies de mettre Total à zéro en début de procédure
    - Met le total dans un type Réel, car tes prix ont certainement des décimales
    - ce n'est pas une boucle For mais une boucle While qu'il faut utiliser
    - Evite d'utiliser RecordCount, Je suppose que tu es en Paradox et que ça fonctionne mais dans tous les autres cas RecordCount ne fonctionne pas
    - Donne des noms clairs à Button1, Form10, etc. Ce sera plus facile à lire pour toi plus tard ou celui qui passera après toi.

    Ton code devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure TForm10.Button1Click(Sender: TObject);
    Var Total:Float;
    begin
      Total := 0;
      With Table2 Do
      Begin
        First;
        While Not Eof Do
        Begin
          total:=total+FieldByName('prix_unitaire').AsFloat;
          Next;
        End;
      End;
      edit11.text:=floattostr(total);
    end;

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 219
    Points : 41 485
    Points
    41 485
    Billets dans le blog
    63
    Par défaut
    pour obtenir la somme une optimisation serait possible via une Query
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT SUM(PRIX_UNITAIRE*QUANTITE) FROM FACTURES WHERE NUM_FACTURE=:n

Discussions similaires

  1. [AC-2007] Comment calculer la somme de 3 champ sur 4 dans un graphique
    Par rch05 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/02/2011, 16h55
  2. [XL-2007] option boutton: comment calculer une somme dans un tableau
    Par Malek713 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/10/2010, 16h05
  3. comment calculer la somme d'une série
    Par osabri dans le forum Débuter
    Réponses: 10
    Dernier message: 14/03/2010, 16h27
  4. comment calculer la somme d'une colonne d'un dbgrid
    Par kirty dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/07/2006, 20h55
  5. [newbie]comment calculer la somme des nb pages sum()?
    Par megapacman dans le forum Débuter
    Réponses: 3
    Dernier message: 13/06/2006, 11h03

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