Calcul de la somme dans une table

totob0 Messages postés 19 Date d'inscription jeudi 4 janvier 2007 Statut Membre Dernière intervention 28 novembre 2008 - 21 févr. 2007 à 14:18
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 24 févr. 2007 à 09:33
bonjour, j'ai besoin d'aide.
je voudrais calculer le total des valeurs d'un champ "prix_commandes " de ma table commandes et voici mon code;

var
 totalproduits:real;
 vrai:boolean;
begin
   totalproduits:=0.0;
   vrai:=tablecommandes.Bof;
      while not (tablecommandes.Eof) do
             begin
               totalproduits:=( (totalproduits+tablecommandes.FieldValues['prix_commandes'] ) );
               tablecommandes.Next;
             end;
                           edit2.Text:=floattostr(totalproduits);
end;

 quand j'appuie sur le bouton , il me fait le calcul  , mais le problème et quequand j'ajoute un  autre element dans ma table au lieu  d'ajouter la dernière valeur au total , il la rajoute juste à la dernière valeur de la table  exemple
supposons que ma table contient 1,2,3,4 total=10, j'appuie sur le boutton et puis je rajoute 5 dans ma table que je reappuie le total doit etre = 15 au lieu de ça il reprend 5+4 et me donne 9  j'epère que ma question est clair
merçi de me repondre svp...

3 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
21 févr. 2007 à 21:49
Salut,

c'est simplement parce que tu ne remets pas ta table au début : ton Bof ne sert à rien.

totalproduits:= 0.0;
tablecommandes.First;
while not(tablecommandes.Eof) do
.......

A +
Thierry
0
totob0 Messages postés 19 Date d'inscription jeudi 4 janvier 2007 Statut Membre Dernière intervention 28 novembre 2008
22 févr. 2007 à 13:02
bonjour, merçi pour la solution , ce n'était qu'un si petit details, qui m'a creuser tout mon temps, je essayer et ça marche encore merçi...
toto.
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
24 févr. 2007 à 09:33
Salut,

Il serait largement plus efficace d'utiliser une requête SQL pour faire ça au lieu de parcourir les lignes de la table une à une...
De plus, tel qu'est rédigé le code ci-dessus (tablecommandes.FieldValues['prix_commandes']), l'emploi de variants freine encore un peu plus l'exécution.
Il serait plus judicieux d'utiliser TableCommandes.FieldByName('prix_commandes').AsFloat (ou AsCurrency, tout dépend du type de ton champ).

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net/
0
Rejoignez-nous