Somme non arrondie dans un pied d'état [Access 97]

Le
Dom
Bonjour,

Dans un pied d'état, j'ai une somme des différents montants de la section
détail. Les champs sont de type monétaire avec deux décimales. A priori, pas
de problèmes, mais, car il y a un mais

Quand dans la section détail, on n'a que des nombres avec des décimales se
terminant par 0 ou 5, le total affiché dans le pied d'état est
rigoureusement correct. En revanche, quand dans cette même section, on a des
nombres avec des décimales autres (1,2,3,4,6,7,8,9), le total affiché
diffère parfois d'un centime en plus ou en moins selon le cas avec le total
exact (calculé avec une bonne vieille machine à calculer doté d'un rouleau
chiffrier !). Parfois aussi, cela tombe pile-poil !

Ai-je la berlue ou suis-je tombé sur un bug d'Access ? On dirait qu'Access
(en tout cas la version 97) arrondit automatiquement les nombres dans un
total et selon une logique qui m'échappe quelque peu

Est-ce quelqu'un fréquentant cet admirable forum pourrait m'éclairer ?

Merci d'avance et bon week-end.

Dominique
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Richard_35
Le #6303041
Bonjour Dom,

Comment est calculé ton montant des lignes "détail" ?
Ne serait-ce pas une multiplication d'une quantité par un prix unitaire, ou
un truc du genre ?
Si oui, quel est le format de ces 2 champs ?

A bientôt,
Richard.

"Dom" 46a1d22c$0$24676$
Bonjour,

Dans un pied d'état, j'ai une somme des différents montants de la section
détail. Les champs sont de type monétaire avec deux décimales. A priori,
pas de problèmes, mais..., car il y a un mais...

Quand dans la section détail, on n'a que des nombres avec des décimales se
terminant par 0 ou 5, le total affiché dans le pied d'état est
rigoureusement correct. En revanche, quand dans cette même section, on a
des nombres avec des décimales autres (1,2,3,4,6,7,8,9), le total affiché
diffère parfois d'un centime en plus ou en moins selon le cas avec le
total exact (calculé avec une bonne vieille machine à calculer doté d'un
rouleau chiffrier !). Parfois aussi, cela tombe pile-poil !

Ai-je la berlue ou suis-je tombé sur un bug d'Access ? On dirait qu'Access
(en tout cas la version 97) arrondit automatiquement les nombres dans un
total et selon une logique qui m'échappe quelque peu...

Est-ce quelqu'un fréquentant cet admirable forum pourrait m'éclairer ?

Merci d'avance et bon week-end.

Dominique



pgz
Le #6302941
Bonjour.

Es-tu sûr que tes variables soient définies avec 2 décimales? Attention les
monétaires en ont 4. Le format permet de n'en afficher que 2 mais la variable
garde les 4. Du coup dans un addition, on peut récupérer un cent par ci, un
cent par là.
Si les valeurs de détails sont calculées, ajouter un round(..., 2), seule
façon d'être sûr de n'avoir que 2 décimales.
Je ne crois pas qu'il y ait là un bug d'access.

Bon courage,
--
pgz

"Ce qui se conçoit mal s''''''''énonce péniblement et les mots pour le dire
arrivent péniblement." - dicomoche.net
_____________________________
pgz.conseil at orange.fr



Bonjour,

Dans un pied d'état, j'ai une somme des différents montants de la section
détail. Les champs sont de type monétaire avec deux décimales. A priori, pas
de problèmes, mais..., car il y a un mais...

Quand dans la section détail, on n'a que des nombres avec des décimales se
terminant par 0 ou 5, le total affiché dans le pied d'état est
rigoureusement correct. En revanche, quand dans cette même section, on a des
nombres avec des décimales autres (1,2,3,4,6,7,8,9), le total affiché
diffère parfois d'un centime en plus ou en moins selon le cas avec le total
exact (calculé avec une bonne vieille machine à calculer doté d'un rouleau
chiffrier !). Parfois aussi, cela tombe pile-poil !

Ai-je la berlue ou suis-je tombé sur un bug d'Access ? On dirait qu'Access
(en tout cas la version 97) arrondit automatiquement les nombres dans un
total et selon une logique qui m'échappe quelque peu...

Est-ce quelqu'un fréquentant cet admirable forum pourrait m'éclairer ?

Merci d'avance et bon week-end.

Dominique





Dom
Le #6302561
Bonsoir,

Après moultes recherches, prises de têtes..., et du code trouvé ça et là,
je pense avoir résolu mon problème. Je teste sur plusieurs bases pendant 15
jours, et dans tous les cas, je vous tiendrai informés.

Cordialement,

Dominique.

"Dom" 46a1d22c$0$24676$
Bonjour,

Dans un pied d'état, j'ai une somme des différents montants de la section
détail. Les champs sont de type monétaire avec deux décimales. A priori,
pas de problèmes, mais..., car il y a un mais...

Quand dans la section détail, on n'a que des nombres avec des décimales se
terminant par 0 ou 5, le total affiché dans le pied d'état est
rigoureusement correct. En revanche, quand dans cette même section, on a
des nombres avec des décimales autres (1,2,3,4,6,7,8,9), le total affiché
diffère parfois d'un centime en plus ou en moins selon le cas avec le
total exact (calculé avec une bonne vieille machine à calculer doté d'un
rouleau chiffrier !). Parfois aussi, cela tombe pile-poil !

Ai-je la berlue ou suis-je tombé sur un bug d'Access ? On dirait qu'Access
(en tout cas la version 97) arrondit automatiquement les nombres dans un
total et selon une logique qui m'échappe quelque peu...

Est-ce quelqu'un fréquentant cet admirable forum pourrait m'éclairer ?

Merci d'avance et bon week-end.

Dominique



Dom
Le #6313811
Bonjour,

Voici comment j'ai procédé :

1) Dans ma table principale (TERM avec 5111 enregistrements) création de 3
champs numériques,réel double, sans format, avec 2 décimales.
Test1
Test2
Test3
Le champ numérique (format monétaire, 2 décimales) qui contient les données
s'appelle : DEBITS. Les données sont positives ou négatives

2) Création de requêtes Mise à jour à exécuter dans cet ordre

- UPDATE TERM SET TERM.Test1 = Int(Abs([DEBITS]));
- UPDATE TERM SET TERM.Test1 = [Test1]*-1 WHERE (((TERM.DEBITS)<0));
- UPDATE TERM SET TERM.Test2 = [DEBITS]-[Test1];
- UPDATE TERM SET TERM.Test2 = [Test2]+0.001 WHERE (((TERM.Test2)>0));
- UPDATE TERM SET TERM.Test2 = [Test2]-0.001 WHERE (((TERM.Test2)<0));
- UPDATE TERM SET TERM.Test2 = Roundinf([Test2],"2");

'Fonction Roundif arrondi inférieur'
Public Function Roundinf(n As Double, e As Long) As Double
Roundinf = Fix((10 ^ e) * n) / (10 ^ e)
End Function

- UPDATE TERM SET TERM.Test3 = [Test1]+[Test2] WHERE (((TERM.Test1)>0));
- UPDATE TERM SET TERM.Test3 = [Test1]+[Test2] WHERE (((TERM.Test1)<0));

3) Dans mon pied d'état, le champ "Total Général" est égal à :
=Somme([Test3]) (au format monétaire), ce qui donne : 302 019 307,36 euros
(et ce qui est rigoureusement exact !), alors que si je fais la somme du
champ [DEBITS], j'obtiens 302 019 310,86 euros, soit un arrondi supérieur de
3,50 euros !!!

J'ai testé sur une bonne trentaine de bases, et à défaut d'être élégant,
cela fonctionne :-)))

Cordialement,

Dominique



"Dom" 46a4eb93$0$19751$
Bonsoir,

Après moultes recherches, prises de têtes..., et du code trouvé ça et là,
je pense avoir résolu mon problème. Je teste sur plusieurs bases pendant
15 jours, et dans tous les cas, je vous tiendrai informés.

Cordialement,

Dominique.

"Dom" 46a1d22c$0$24676$
Bonjour,

Dans un pied d'état, j'ai une somme des différents montants de la section
détail. Les champs sont de type monétaire avec deux décimales. A priori,
pas de problèmes, mais..., car il y a un mais...

Quand dans la section détail, on n'a que des nombres avec des décimales
se terminant par 0 ou 5, le total affiché dans le pied d'état est
rigoureusement correct. En revanche, quand dans cette même section, on a
des nombres avec des décimales autres (1,2,3,4,6,7,8,9), le total affiché
diffère parfois d'un centime en plus ou en moins selon le cas avec le
total exact (calculé avec une bonne vieille machine à calculer doté d'un
rouleau chiffrier !). Parfois aussi, cela tombe pile-poil !

Ai-je la berlue ou suis-je tombé sur un bug d'Access ? On dirait
qu'Access (en tout cas la version 97) arrondit automatiquement les
nombres dans un total et selon une logique qui m'échappe quelque peu...

Est-ce quelqu'un fréquentant cet admirable forum pourrait m'éclairer ?

Merci d'avance et bon week-end.

Dominique







Publicité
Poster une réponse
Anonyme