Newsgroup: it.comp.appl.access
Titolo: Arrotondamento numerico.

Buongiorno a tutti,
una piccola domanda, si può arrotondare il risultato di un calcolo in campo 
calcolato? se si, come?
Grazie,
Lino Fornaro 


Domanda fatta MILIONI di volte....
Hai provato a fare una ricerca prima sull'argomento...????
@Alex

 in campo calcolato? se si, come?
 Arrotondamenti
 
www.donkarl.com/it?FAQ2.1
-- 
Ciao
Karl
*********
Access FAQ: 
http://www.donkarl.com/it


E' vero è stata fatta anche più di milioni di volte, io infatti ho
risolto dopo aver trovato la funzione "ARROTONDA" nel sito di Karl D.,
uso questa funzione nei campi che calcolo mettendo il richiamo della
funzione in "dopo aggiornamento". Il problema nasce quando la casella
non è associata a nulla se non a visualizzare o stampare un semplice
calcolo come ad es.     origine controllo: =TOT_IMPONIBILE+TOT_IVA
per avere il totale di una fattura iva compresa.
Spero di essermi spiegato e di trovare una soluzione.
Grazie ancora
Lino Fornaro

 ...
No, non č chiaro, qual'č il tuo problema.
Non conosco la funzione "ARROTONDA", ma in alternativa
puoi usare tutte le funzioni di arrotondamento che veramente
si trovano sul mio sito anche in un controllo calcolato. P.e.
=fctRount(TOT_IMPONIBILE+TOT_IVA)
Certo devi sapere cosa fai in rispetto all'arotondamento
giusto delle somme o posizioni singoli come sempre
quando si arrotonda qc. Perň questo č independente
dal uso delle funzioni.
-- 
Ciao
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 Access FAQ:
www.donkarl.com/it
La funzione è questa (pensavo fosse tua, scusami ma è un pò di tempo
che non lavoro su access e molte cose le ho dimenticate):
Public Function arrotonda(nNumero, nDecimali As Integer) As Double
'Equivale alla funzione ROUND
'''''''''''''''''''''''''''''
Dim nValDecimaleRimasto As Currency, nNumeroMod As Currency
Dim nNewNumero As Currency
'Modifico il numero decimale rendendolo intero fino alla concorrenza
'dei decimali voluti (Es. se avessi nNumero = 12,123456 ; nDecimali =
3
'rendo intero il numero decimale per i primi 3 posti dopo la virgola:
12123,456
nNumeroMod = nNumero * (10 ^ (nDecimali))
'Del numero modificato prendo la sola parte intera ( nell'esempio =
12123)
'e la memorizzo in una variabile
nNewNumero = Int(nNumeroMod)
'In un'altra variabile memorizzo la parte decimale rimasta
(nell'esempio = 0,456)
nValDecimaleRimasto = nNumeroMod - nNewNumero
'Confronto se è maggiore o uguale a 0.5
'In questo caso 0÷4 viene arrotondato all'unità inferiore
' 5÷9 all'unità superiore
'Se si volesse arrotondare 0÷5 all'unità inferiore e solo da 6÷9
'a quella superiore, bisognerebbe indicare ... nValDecimaleRimasto >
5 ....
If nValDecimaleRimasto >= 0.5 Then
    'aggiungo una unità prima di restituire il numero con i decimali
voluti
    arrotonda = (nNewNumero + 1) / (10 ^ nDecimali)
Else
    'oppure ritorno il numero troncato ai decimali voluti
    arrotonda = nNewNumero / (10 ^ nDecimali)
End If
End Function

 ...
Non ho provato l'esattezza della tua funzione, ma ripeto la
domanda abbastanza importante:
Cosa esattamente è il problema?
Cosa non funziona se usi la funzione nell'origine controllo
=arrotonda(TOT_IMPONIBILE+TOT_IVA;2)
?
-- 
Ciao
Karl
*********
Access FAQ: 
http://www.donkarl.com/it
 

 - Mostra testo citato -
Ho provato nell'origine controllo questo:
Tot_fatt_ivata (campo calcolato) =arrotonda([IMP_ TOT]+[iva];2)
seguendo le tue indicazioni sarebbe dovuto essere
=arrotonda(IMP_ TOT+iva;2) ma non funziona mi dà il classico errore
"errore di sintassi - E' possibile che sia stato messo un operando
senza un operatore"
Dove sbaglio??
Grazie
Lino F.

 Dove sbaglio??
In prima qui indicare nomi diversi e poi usare un nome
di campo o controllo con uno spazio.
(vedi anche  
www.donkarl.com/it?FAQ1.5
)
-- 
Ciao
Karl
*********
Access FAQ: 
www.donkarl.com/it
 


Scusami Karl ma non ho capito cosa vuoi dirmi
allora...
ho una casella di testo chiamata "Tot_fatt_ivata" dove mi somma il
valore del campo "IMP_ TOT" + il valore del campo "IVA".
facendo in origine controllo =arrotonda(IMP_ TOT+iva;2) o la tua
=fctround(IMP_ TOT+iva;2)
mi dà quell'errore che ti ho indicato.
....scusa per la mia ottusaggine
Lino F.

>> Tot_fatt_ivata (campo calcolato) =arrotonda([IMP_ TOT]+[iva];2)
Ti ho chiesto quale errore è successo con questa variante?
-- 
Ciao
Karl
*********
Access FAQ: 
http://www.donkarl.com/it
 

 - Mostra testo citato -
 Tot_fatt_ivata (campo calcolato) =arrotonda([IMP_ TOT]+[iva];2) era
solo per indicare che la casella combinata "Tot_Fatt_ivata" era la
casella da calcolare e
=arrotonda([IMP_ TOT]+[iva];2) è il calcolo da fare nell'"origine
controllo", forse ho creato un pò di confusione.
comunque mettendo =arrotonda([IMP_ TOT]+[iva];2) nell'origine
controllo poi in visualizzazione maschera in quella casella non
compare il calcolo ma il l'errore "#Nome".
Spero di essermi spiegato bene e grazie ancora per la pazienza.
Lino F.

 ...
Puoi almeno provare se la funzione non viene riconsciuto
o se il problema sono i tuoi campi/controlli:
=arrotonda(1;2)
come origine controllo di una casella di testo, ti dà 1 o un errore?
-- 
Ciao
Karl
*********
Access FAQ: 
www.donkarl.com/it
 


=arrotonda(1;2) mettendo questo mi da errore.
Ricapitolo (sono mortificato di dare fastidio)
ho 3 caselle di testo
1. in cui mi visualizzo il totale del campo IMPTOT di una
sottomaschera chiamata DETTCOMPLFATTIMMED e nell'origine controllo ho
messo questo
    =DETTCOMPLFATTIMMED.Form!IMPTOT
2. nella seconda casella faccio lo stesso per il totale dell'IVA con
questo
   =DETTCOMPLFATTIMMED.Form!IMPIVA  - che sarebbe il totale
dell'importo IVA
3. nella terza io sommo i totali dei due importi.
L'arrotondamento che mi serve mi deve permettere di avere la
precisione del totale della fattura che non sia quindi p.e.
(imponibile) 52,31 + (iva) 10,46 = totale 62,78
Spero di essermi spiegato al meglio.
Ciao
Lino F.