Subject | Utilisation d'une fonction et calcul d'arrondissement des unités |
---|---|
Author | infodelphi2006 |
Post date | 2006-03-07T15:10:56Z |
Afin de m'assurer du calcul j'ai inscrit du code dans l'évènement
Before insert et Before update, il s'agit d'un calcul d'arrondissement.
J'ai utilisé la fonction de delphi (roundto) que j'ai inscrit dans un
Dll (TecUdf.dll) Voici un exemple avec Delphi : taux 55.00 Unités:
1.583 et le résultat est toujours 87.06 $ (Même résultat avec
trois ou cinq décimale pour les unités) procedure
TForm2.ButtonClick(Sender: TObject);
Var Unites, Taux, Temps : currency;
begin
Taux := RoundTo(55, -2);
Unites := RoundTo(1.583, -5); Temps:= RoundTo((Taux * Unites), -2);
showmessage(currtostr(Temps));
end;
Le calcul est au niveau du montant facturable (temps = unités *
taux). Avant ma nouvelle version, j'utilisait un arrondissement à
trois décimales pour le champ Unites (udf_RoundTo(NEW.UNITES, -3) et
avec la nouvelle version j'utilise un arroudisement à cinq (5)
décimales. (udf_RoundTo(NEW.UNITES, -5). Pour les champs Taux, et
Temps j'ai touours utilisé deux décimales. Avec ce changement, le
résultat était de 86.07 au lieu de 86.06 $. Pourquoi la function
ne calcule pas correctement avec Firebird et qu'elle fonctionne
directement avec Delphi. Merci
[Non-text portions of this message have been removed]
Before insert et Before update, il s'agit d'un calcul d'arrondissement.
J'ai utilisé la fonction de delphi (roundto) que j'ai inscrit dans un
Dll (TecUdf.dll) Voici un exemple avec Delphi : taux 55.00 Unités:
1.583 et le résultat est toujours 87.06 $ (Même résultat avec
trois ou cinq décimale pour les unités) procedure
TForm2.ButtonClick(Sender: TObject);
Var Unites, Taux, Temps : currency;
begin
Taux := RoundTo(55, -2);
Unites := RoundTo(1.583, -5); Temps:= RoundTo((Taux * Unites), -2);
showmessage(currtostr(Temps));
end;
Le calcul est au niveau du montant facturable (temps = unités *
taux). Avant ma nouvelle version, j'utilisait un arrondissement à
trois décimales pour le champ Unites (udf_RoundTo(NEW.UNITES, -3) et
avec la nouvelle version j'utilise un arroudisement à cinq (5)
décimales. (udf_RoundTo(NEW.UNITES, -5). Pour les champs Taux, et
Temps j'ai touours utilisé deux décimales. Avec ce changement, le
résultat était de 86.07 au lieu de 86.06 $. Pourquoi la function
ne calcule pas correctement avec Firebird et qu'elle fonctionne
directement avec Delphi. Merci
[Non-text portions of this message have been removed]