Calcul cout total

[Résolu]
Signaler
Messages postés
22
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
19 août 2006
-
Messages postés
109
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
5 octobre 2011
-
Bonjour,

je suis debutant en delphi et voici mon probleme

dans une base de donnees paradox, je voudrais savoir comment faire le calcul du cout total :



champ temps Ch_prix_heure chp_Cout_total

03:30:00 x 15,00 ? = 52,50 ?



Je vous remercie d'avance de votre aide

9 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Avec l'évènement OnCalcFields, tu disposes de l'argument DataSet qu'il suffit d'utiliser conjointement avec la méthode FieldByName si tu n'as pas déclaré de champs persistants pour ta table :

procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
  with DataSet do
    FieldByName('Total').AsCurrency := 
      FieldByName('Temps').AsFloat * 24
      * FieldByName('Prix_heure').AsCurrency;

 end ;

Dans ma réponse précédente, j'avais essayé de te faire comprendre que les 24 heures étaient codées en fraction de 1.
Donc, si 24 heures vaut 1, combien valent 3 heures 30 minutes ? (la réponse est sur cette page)

May Delphi be with you !

<HR color =#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Salut vrachid,

Déjà, pour commencer, le composant TQuery n'est pas en mesure de traiter plusieurs requêtes les unes concaténées aux autres. Tu as donc dû recevoir un bon vieux message d'erreur, non ?
Ainsi, le code suivant :
Add(' SELECT SUM(Hono) as TotalH from Recette ');
add('SELECT SUM(Depense) as TotalD from Recette');

doit s'écrire :
Add('SELECT SUM(Hono) AS TotalH, Sum(Depense) AS TotalD FROM Recette');

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
il faut créer un champ calculé dans ton query


@+

cantador
Messages postés
22
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
19 août 2006

merci de ton aide,
c'est ce que j'ai fait mais j'obtiens 2,19 ? au lieu des 52,50 ?
doit y avoir un probleme de conversion mais je vois pas où
merci pour tout
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Les champs de type date ou heure sont en réalité stockées sous forme de réels.
Ainsi, 03:30:00 est exprimé en fraction de 24 heures (1 jour) et donne, en nombre décimal : 3.5 / 24, soit 0.14583333333333333333333333333333.

Donc 3.5 /24 * 15.5 = 2.1875 (arrondi à 2.19).
Pour obtenir le résultat correct, il faut donc multiplier par 24.

May Delphi be with you !

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
22
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
19 août 2006

Voici comment je procede, dans oncalcfield

var
dTime: double
Hr, Mn, Sec: word;
begin
DecodeTime(table.FieldByname('temps').AsDateTime, Hr, Mn, Sec, Sec);
dTime := Hr + ((Mn / 60 * 100) / 100);
table.FieldByName('total').AsCurrency := dTime * table.FieldByName('prix_heure').AsCurrency;

mais le resultat du champ 'total' reste à 0,00 ?
avez-vous une idée ?
Merci d'avance
Messages postés
22
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
19 août 2006

merci beaucoup de votre aide, cette fois c'est ok
Messages postés
109
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
5 octobre 2011

slt delphiprog peux tu m'aider a résoudre ce qui cloche la
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
with QCaisse do
begin
with sql do
begin
Clear;
Add(' SELECT SUM(Hono) as TotalH from Recette ');
add('SELECT SUM(Depense) as TotalD from Recette');
end;
open;
end;
Label5.Caption:=CurrToStrF(QCaisse.fieldbyname('TotalH').asCurrency,fffixed,2);
Label6.Caption:=CurrToStrF(QCaisse.fieldbyname('TotalD').asCurrency,fffixed,2);
QCaisse.FieldByName('TotalG').AsCurrency :=QCaisse.FieldByName('TotalH').AsFloat - QCaisse.FieldByName('TotalD').AsCurrency;
Label7.Caption:=CurrToStrF(QCaisse.fieldbyname('TotalD').asCurrency,fffixed,2);
 end;
merci
Messages postés
109
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
5 octobre 2011

oui merci beaucoup j'ai reglé ça
 a +