Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

format monétaire ou numérique pour des prix

1 réponse
Avatar
Gundt
Bonjour à tous,

Sûrement une question facile pour certains.
access 97

Comme j'ai des écarts entre le total de certaines factures et le total
des Bl correspondants et que je n'arrive pas à expliquer d'où vient la
différence (quelques centimes), je soupçonne que la nature des champs
stockant des prix et des valeurs monétaires ne soit pas bonne. Je me
pose la question de la nature des champs qui stockent des prix.

1ère question : choix sur le type de données : monétaire ou numérique ?

2ème question : si on choisit dans type de données monétaire, quel
format choisir nombre général, monétaire, fixe ou standard ? Ensuite,
dans ce cas de figure, choisir pour les décimales auto ou fixe et fixer
à 2 décimales ?

3ème question :
Si on choisit comme type de données numérique, quelle taille choisir :
réel simple ou réel double.

Dans la table Articles, par exemple, le prix affiché est toujours de 2
décimales et en euros.
En début d'année, s'il y a une augmentation, une requête modifie les
prix en calculant le nouveau prix comme ceci :
nouveau prix = ancien prix * ((100 + % d'augmentation)/100)
Je pense qu'au fil des années, le prix affiché est toujours de 2
décimales mais peut-être que Access continue à calculer en gardant en
mémoire sur plusieurs décimales.
Par exemple, un prix de 1,02 € et avec une augmentation de 1,5 % donnera
un prix de 1,0353 au tableur mais Access n'affichant que 2 décimales
continue peut-être le calcul sur 1,0353 au lieu de 1.03 et provoquerait
des décalages ?

Le prix articles est actuellement :
type de données : monétaire
format : monétaire
décimales : auto

Quels sont les paramètres optimum pour ne pas avoir de décalage et de
problèmes d'arrondis ?

Gundt

1 réponse

Avatar
Jessy Sempere
Bonjour

access 97
Comme j'ai des écarts entre le total de certaines factures et le total
des Bl correspondants et que je n'arrive pas à expliquer d'où vient la
différence (quelques centimes), je soupçonne que la nature des champs
stockant des prix et des valeurs monétaires ne soit pas bonne. Je me
pose la question de la nature des champs qui stockent des prix.
1ère question : choix sur le type de données : monétaire ou numérique ?


Alors pour le choix, si tes données numériques sont des valeurs monétaire,
il faut effectivement choisir en type de données : "Monétaire".

2ème question : si on choisit dans type de données monétaire, quel
format choisir nombre général, monétaire, fixe ou standard ? Ensuite,
dans ce cas de figure, choisir pour les décimales auto ou fixe et fixer
à 2 décimales ?


Le format n'a aucun influance sur la donnée stockée par Access, ce n'est que
l'aspect visible de la donnée, maintenant pour un confort visuel, il vaut
mieux prendre Monétaire et pour décimal, mettre auto.

3ème question :
Si on choisit comme type de données numérique, quelle taille choisir :
réel simple ou réel double.


Dans ton cas, il n'est pas utile de choisir ce type de donnée.

Dans la table Articles, par exemple, le prix affiché est toujours de 2
décimales et en euros.
En début d'année, s'il y a une augmentation, une requête modifie les
prix en calculant le nouveau prix comme ceci :
nouveau prix = ancien prix * ((100 + % d'augmentation)/100)
Je pense qu'au fil des années, le prix affiché est toujours de 2
décimales mais peut-être que Access continue à calculer en gardant en
mémoire sur plusieurs décimales.
Par exemple, un prix de 1,02 € et avec une augmentation de 1,5 % donnera
un prix de 1,0353 au tableur mais Access n'affichant que 2 décimales
continue peut-être le calcul sur 1,0353 au lieu de 1.03 et provoquerait
des décalages ?


Tu as tout compris...
Le type de donnée "Monétaire" stocke de 1 à 4 décimale donc même si tu n'en
vois que 2 (à cause ou grace au "format" monétaire), Access stockera bien
dans ton exemple 1,0353...

Quels sont les paramètres optimum pour ne pas avoir de décalage et de
problèmes d'arrondis ?


Le mieux est de générer directement dans ta requête de mise à jour une
valeur arrondi à 2 décimale.
Vu que tu es sur Access 97, tu peux utiliser cette fonction :
http://access.fr.free.fr/articles.php?lng=fr&pg3" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://access.fr.free.fr/articles.php?lng=fr&pg3

Il te suffit de l'utiliser dans ta requête en faisant :
nouveau prix = fRound((ancien prix * ((100 + % d'augmentation)/100));2)

Voilà

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------