Calcul cout total

Résolu
cs_jbob Messages postés 22 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 19 août 2006 - 31 mars 2006 à 13:02
vrachid Messages postés 109 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 octobre 2011 - 3 avril 2008 à 19:08
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

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
2 avril 2006 à 09:53
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.
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
1 avril 2008 à 22:49
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.
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
31 mars 2006 à 17:30
il faut créer un champ calculé dans ton query


@+

cantador
0
cs_jbob Messages postés 22 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 19 août 2006
31 mars 2006 à 19:43
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
31 mars 2006 à 22:54
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.
0
cs_jbob Messages postés 22 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 19 août 2006
1 avril 2006 à 23:43
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
0
cs_jbob Messages postés 22 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 19 août 2006
2 avril 2006 à 12:57
merci beaucoup de votre aide, cette fois c'est ok
0
vrachid Messages postés 109 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 octobre 2011
25 mars 2008 à 10:41
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
0
vrachid Messages postés 109 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 octobre 2011
3 avril 2008 à 19:08
oui merci beaucoup j'ai reglé ça
 a +
0
Rejoignez-nous