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

il risultato di una operazione mi da ad esempio 20.001 come faccio ad
arrotondare alle 20.000? questo deve essere scritto in una query ho provato
e riprovato ma non ci riesco, grazie Claudia

 ha scritto nel messaggio
news:J9h56.246434$hk4.12...@news.infostrada.it...


 ha scritto nel messaggio
news:J9h56.246434$hk4.12...@news.infostrada.it...

Arrotondamento alle mille lire:
(int(<Valore> / 1000)) * 1000
Per altri arrotondamenti modifica il valore 1000 in quello desiderato.
Ciao
LaLo

Puoi usare questa routine, passandogli i valori che ti servono (puoi
decidere a quante cifre arrotondare)
Public Function Arrotonda(CifraDaArrotondare As Double, ArrotondaAlle As
Double)
    'Arrotonda la cifra passata da arrotondare all'importo passato come
ArrotondaAlle (alle 10.000, 100.000, etc).
    Arrotonda = ((CLng(CifraDaArrotondare / ArrotondaAlle)) * ArrotondaAlle)
End Function
Esempio:
CifraDaArrotondare      ArrotondaAlle        Risultato
12584326                         100000             12600000
12584326                         10000               12580000
12584326                         1000                 12584000
12584326                         100                   12584300
12584326                         10                     12584330
Arrotonda per eccesso o per difetto, con approssimazione 0,5 (significa che
la cifra significativa per l'arrotondamento è compresa tra 0 e 4 allora
arrotonda per difetto, altrimenti per eccesso.
Ciao.
Omar
-- 
Posted from 
smtp1.libero.it
 [193.70.192.51] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Io ho una query di selezione da una tabella Articoli con
Prezzo    Sconto
1.250     25%
poi ho creato nella query un campo Acquisto che fa questa operazione:
Acquisto: CCur([Prezzo]*(1-[Sconto])/100)*100
a questo punto se ho 1.250 scontate del 25% mi da 937.5 .
Scusate ma non sono molto afferata in access.
Allora io:
1 seleziono la casella --> proprietą
2 seleziono evento --> prima di aggiornare --> e inserisco la routine evento
che mi avete scritto?
questo lo ho fatto ma visualizzo --> niente
In che campo va inserita questa riga di codice?
Public Function Arrotonda(CifraDaArrotondare As Double, ArrotondaAlle As
Double)
Arrotonda = ((CLng(CifraDaArrotondare / ArrotondaAlle)) * ArrotondaAlle)
End Function
CifraDaArrotondare = ? se io questo campo ho il risultato di una query
chiamata Acquisto (vedi sopra)
ArrotondaAlle in questo caso io metto 50 perchč voglio sia arrotondata alle
50 lire
Grazie Claudia ;)

 50 lire
La funzione Arrotonda va inserita in un modulo: dalla finestra Database vai
sui moduli, ne apri uno nuovo (forse è il primo che apri), inserisci il
codice che ti hanno postato, salvi dando al modulo un nome differente da
Arrotonda.
A questo punto, il tuo MDB in Access si è arricchito di una nuova funzione,
che potrai usare esattamente come se fosse stata prevista dal VBA.
--
Silvio
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access


ma questo lo sapevo fare ma non so come attribuire alla casella di testo la
funzione.
 E poi:
CifraDaArrotondare = ? se io questo campo ho il risultato di una query
chiamata Acquisto posso scrivere Acquisto?
ArrotondaAlle in questo caso io metto 50 perchč voglio sia arrotondata alle
50 lire Giusto?

 50 lire Giusto?
Ho riportato anche parte del messaggio andato perso nella tua risposta
precedente perché mi sembrava significativo.
Se ti sta bene avere il campo Acquisto già arrotondato nella query, questo
diventerà
Acquisto: Arrotonda(CCur([Prezzo]*(1-[Sconto])/100)*100 ; 50)
Se l'operazione vuoi che venga eseguita nella maschera a fronte dell'evento
Su corrente
Me.Acquisto= Arrotonda( Me.Acquisto, 50)
Se l'operazione vuoi farla solo in alcuni casi, inserisci un pulsante di
comando e nell'evento Su click di quest'ultimo
Me.Acquisto= Arrotonda( Me.Acquisto, 50)


Silvio Berruti
Grazie mille mi hai dato un grosso aiuto
Claudia G

Salve,
il mio problema è che devo arrotondare un Totale alle 50 lire superiori, ho
provato con la funzione Arrotonda(NomeCampo,50) postata da Omar il 5 Gennaio
ma non funziona forse sbaglio qualcosa io.
Qualcuno conosce la soluzione al mio problema?
Grazie anticipatamente per le eventuali risposte.
Andrea



 ha scritto nel messaggio
news:37k66.1898$g_2....@news.infostrada.it...

Che problema hai? Io l'ho provata e va bene. Specifica di che tipo di errore
si tratta.
Ciao
LaLo

 LaLo
Il problema č che non esegue bene l' arrotondamento, io voglio che mi
arrotondi sempre alle 50 lire superiori esempio: 12=50 51=60 158=160
140=150.
La funzione suddetta invece si comporta cosě: 12=0 51=50 158=150 140=100.
Grazie


Prva con la seguente routine:
Public Function Arrotonda(dblImporto As Double, dblPrec As Double)
    'Arrotonda la cifra passata da arrotondare all'importo passato come
    If (Int(dblImporto / dblPrec) - (dblImporto / dblPrec)) = 0 Then
        Arrotonda = ((CLng(dblImporto / dblPrec)) * dblPrec)
    Else
        Arrotonda = ((CLng(dblImporto / dblPrec) + 1) * dblPrec)
    End If
End Function
E' la stessa routine di omar, alla quale ho fatto una aggiunta.
Ciao
LaLo