Newsgroup: it.comp.appl.access
Titolo: Ancora problemi con l'arrotondamento commerciale

E' un argomento ormai trattato in tutte le salse lo so!
Ma solo quando vado a registrare le fatture di un fornitore ho dei problemi.
Ho usato il suggerimento di Karl di creare la funzione fctRound.
Ma in questo es ecco cosa accade, premettendo che l'origine della maschera � 
una query in cui � specificato
IMPOSTA: CCur(FCTRound([IMPONIBILE]*([PERCENTUALE ALIQUOTA])/100;2))
TOTALE: CCur([IMPONIBILE]+[IMPOSTA])
FATTURA DI PINCOPALLO DI EURO 9049.55
IMPONIBILE            PERCENTUALE ALIQUOTA            IMPOSTA 
TOTALE
7040.00                        20 
1408.00                 8448.00
3.62                              20 
0.72                        4.34
497.66                          20 
99.53                    597.19
cos� tot_imposta= 1508.25
e tot_ft= 9049.53
Insomma la funzione arrotondando mi mangia quei centesimi che dovrebbe 
tenere in memoria per fare il totale corretto.
Dove sbaglio?
Grazie infinite
-- 
Giorgia 

Giorgia ha scritto:





su quale IMPONIBILE sbaglia? perch� in effetti la somma poi � giusta...
FCTRound come � fatta?
-- 
Ciao
Pablitomf
----------------------------
http://www.accessgroup.it/
----------------------------
Non mi fido molto delle statistiche, perch� un uomo con la testa nel forno
acceso e i piedi nel congelatore statisticamente ha una temperatura media.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio 
news:h4a2hm$87l$1...@news.newsland.it...

Ciau!
s� il totale SEMBRA corretto ma ti indico imposta senza arrotondamento
7040 imponibile= 1408 imposta
3.62 imponibile= 0.724 imposta
497.66 imponibile= 99.532 imposta
in questo modo il totale sarebbe 9049.536 che arrotondato poi darebbe 
9040.54 neanche il tot della fattura...ma sto fornitore non so che 
arrotondamento applichi!
ah, eccoti FctRound
Function fctRound(varNr As Variant, Optional varPl As Integer = 2) As Double
 'by Konrad Marfurt + ("" by) Luke Chung + Karl Donaubauer
    'esce se valore non numerico
    If Not IsNumeric(varNr) Then Exit Function
    fctRound = Fix("" & varNr * (10 ^ varPl) + Sgn(varNr) * 0.5) / (10 ^ 
varPl)
End Function
Mentre scrivevo pensavo....forse devo applicare fctround solo nel 
totale?....buch
Giorgia 


Naturalmente l'imposta la calcoli sul totale imponibile di una determinata 
aliquota, giusto ?
No perche' se fai la somma degli imponibili di riga e fai la somma delle 
imposte di riga, e' abbastanza raro che l'imposta totale corrisponda ad x% 
dell'imponibile totale
Ciao
RobertoA

> FCTRound come � fatta?
Vabb� la funzione � giusta vista che l'ha fatta Karl (non l'avevo letto) 
quindi manco la guardo... per� visto che � giusta e tu la applichi 
all'imponibile, vuol dire che lo stesso imponibile perde i restanti valori 
decimali... per cui � giusto che poi sommandoli ottieni un risultato che ti 
ti mangia quel che per strada gli addendi han perso...
se invece di passare i dati imponibili per la function, li metti cos� come 
escono, mettendo nel Form solo la visualizzazione arrotondata (in maniera 
tale da visualizzarli come ti pare), poi i risultati ritornerebbero ad 
essere quelli che ti aspetti...
chiaro?

 ha scritto nel messaggio 
news:rU1am.42118$9f6....@twister1.libero.it...

S� chiaro, ho appena provato e in effetti funziona.
Ma quindi la funzione di Karl � corretto applicarla solo se non si 
gestiscono gli imponibili singolarmente?
Quindi ha ragione RobertoA che ha risposto al mio post?
Giorgia 


Hai intuito giusto Roberto, applicavo fctRound per ogni Imponibile e non per 
la somma degli stessi.
E' quindi corretto ci� che dice Pablitomf quando mi suggerisce che per come 
ho impostato le cose, mi conviene solo impostare la visualizzazione dei 
decimali direttamente nella form senza far passare il campo Imponibile per 
fctRound?
Giorgia 

 Quindi ha ragione RobertoA che ha risposto al mio post?
Giorgina ma che fai, a Roberto chiedi se � giusto quello che ti ho detto
io e a me chiedi se � giusto ci� che ti ha detto lui? 
e pure ti tiro le orecchie... :D
allora partiamo da un "fatto"... la funzione di Karl gestisce le cifre in
modo da arrotondarle in un certo modo alla base... ci� vuol dire che poi
del resto dei decimali che formavano il numero arrotondato prima della
funzione in effetti non ci sono +... la conseguenza di tale operazione �
che non essendoci + le cifre che (per quanto piccole e irrisorie) ti
portavano nella somma a un certo risultato, il risultato ti sballa nei
termini che hai notato...
se invece tu metti la cifra per quella che �, ma gli lasci solo la
"parvenza" delle 2 cifre decimali (quindi la formatti solo a video, ma la
lasci di fatto intatta nel valore del campo), poi � normale che la somma
ti ritorni ad essere quella sperata (e anche sulla somma puoi lasciare
solo la parvenza se ti serve arrotondata a vista e non di fatto)... io
credo che la funzione di Karl, per quanto buona, a te in questo caso non
serve!


 fctRound?
Rob� j�, dammi i voti... vediamo se st'esame l'ho passato! :)


 > gestiscono gli imponibili singolarmente?
e riguardo a questa frase, la risposta � pi� semplice e banale di quanto
credi : � corretto applicarla se e solo se "ti serve realmente" il
risultato finale che ottieni dalla sua singola applicazione... ovvero se
quelle restanti cifre decimali che la funzione elimina (e bada bene, ho
detto elimina e non nasconde, perch� di fatto � quello che fa) non ti
servono ad alcuno scopo... in questo caso sarebbe giusto applicarla... nel
caso opposto (quindi il tuo) non lo sarebbe.



ok!tutto chiaro grazie mille!
e non mi tirare le orecchie ho risposto a Roberto per fargli sapere che 
avevo letto la sua risposta ma che stavo valutando la tua...;-)
-- 
Giorgia 

ma figurati, scherzavo ;)
