Newsgroup: it.comp.appl.access
Titolo: AIUTO ammortamenti errati

Ciao a tutti
ho imposto delle formule di ammortamento su costo storico, ma ho notato che
i valori degli ammortamenti sono sempre interi e NON riportano i due
decimali che dovrebbero esserci dopo la virgola.
Vi mando la query con le formule.....sicuramente qualcuno troverà
l'inghippo...
Baci
Ceci
      anno_attuale
      [qry_tbl_di_servizio_selezione]![anno_attuale]
      mese_attuale
      [qry_tbl_di_servizio_selezione]![mese_attuale]
      diff
      [qry_tbl_di_servizio_selezione]![anno_attuale]-[tbl_cespiti]![anno]
      amm_primo_anno
      Int(([tbl_cespiti]![importo_euro]*([aliquota]![aliquota]/100)/2))
      valore_residuo
IIf([diff]=0;[importo_euro];(([importo_euro]-[amm_primo_anno])-((([importo_e
uro]*[aliquota]![aliquota])/100)*([diff]-1))))
      aliquota
      [aliquota]![aliquota]
      valore_residuo_finale
      Int(IIf([valore_residuo]>0;[valore_residuo];0))

       Int(([tbl_cespiti]![importo_euro]*([aliquota]![aliquota]/100)/2))
cut
guarda, non ho analizzato le formule ma ti faccio una domanda:
secondo te a cosa serve la funzione int() ?
Sib

 secondo te a cosa serve la funzione int() ?
ho provato a togliere int() e la situazione non cambia.

 ho provato a togliere int() e la situazione non cambia.
alcuni sviluppatori hanno una abitudine che non condivido, usano un campo
intero per memorizzare l'iva che non e' un intero ma un valore percentuale.
in questa ipotesi (che deduco dal fatto che dividi per 100) access potrebbe
trasformare tutti in intero nella moltiplicazione.
prova a trasformare in percentuale il campo aliquota.
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:HUjBa.10365$pR3.1...@news1.tin.it...

Non serve convertire il campo.
Basta racchiudere il nome del campo in Cdbl().
la tua formula diventa quindi:
[tbl_cespiti]![importo_euro]*(CDbl([aliquota]![aliquota])/100)/2
e anche:
IIf([diff]=0;[importo_euro];(([importo_euro]-[amm_primo_anno])-((([importo_e
uro]*CDbl([aliquota]![aliquota]))/100)*([diff]-1))))
Ciao.
Giorgio

grazie ad entrambi ora ci provo e vi dico che succede
baci
ceci

GRAZIEEEEEEEEEEEEEEEEEEEEEE
FUNZIONA ALLA PERFERZIONEEEEEEEEEE
CECI

 Non serve convertire il campo.
cut
no, io intendevo proprio di usare i campi di tipo percentuale e abbandonare
la divisione per 100.
figurati se si inventano una aliquota del 15,5%! si troverebbe a dover
aggiornare chissa' quante query e quanto codice.
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:FalBa.16819$g92.3...@news2.tin.it...

E se la conversione di quel campo porta a delle perdite di precisione in
altri punti del programma?
Mai capitato che ti compaiano numeri tipo ,00000000035 o giů di lě perchč le
m***e dei motori Microsoft non sanno gestirsi i numeri come Cristo comanda?
Io non consiglierei di convertire il campo cosě *brutalmente* per risolvere
i problemi di una query o di un pezzo di codice...
Poi ognuno fa come crede.

 Poi ognuno fa come crede.
Ognuno ha la sua tecnica, io non ho mai avuto problemi facendo cosi' e ho
clienti che lavorano con prezzi di tutti i tipi (piccolissimi, grandissimi
ecc ecc.)
Sib

AIUTO DI NUOVO
ho fatto i cambiamenti e alla prima tutto bene...ma poi quando ho ricaricato
la tabella principale e avviate le query i totali di ammortamento residuo
sono lievemente cambiati.
PRIMA euro 1.831,12
DOPO euro 1.831,00
x' ho perso x strada i 12 centesimi?
TNK
Ceci

 DOPO euro 1.831,00
non ho capito quali cambiamenti hai fatto.
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:7GpBa.19819$g92.4...@news2.tin.it...

ho cambiato le due formule come mi ha scritto George......e i residuo
quadravano con il programma contabile utilizzato dalla ditta. Ma poi quando
ho ricaricato la tabella x fare una prova i centesimi sono
cambiati.........................

 cambiati.........................
Ma sei sucura di avere gli stessi dati che avevi prima? e nello stesso
formato?
Sib

 il formato percentuale lo inposto sempre come double.
Confermo:
Non ricordo se nell'help od in qualche libro, si consigliava di ricorrere al
tipo valuta ogni volta che si dovesse avere una particolare accuratezza dei
decimali, in quanto vengono utilizzati algoritmi di calcolo particolari.
Sempre ripescando nella mia memoria, quando tanti anni fa mi spigarono le
operazioni aritmetiche in formato binario, ci dimostrarono che sopratutto
nelle divisioni potevano sorgere dei problemi con i decimali, allo stesso
modo di come nel sistema in base decimale la divisione 10/3 non ha un
risultato definito.
Dovrebbe essere per questo motivo che ci sono operazioni che mentre nel
sistema decimale ci sembrano banali, poi messe nel calcolatore danno
risultati approssimati.
Ciao a tutti.