Problemi visualizzazione decimali su maschera continua.

di Scolaretto il
11 risposte

Su una maschera continua visualizzo i dati generati da una query di raggruppamento in cui somma dei campi numerici di tipo precisione singola. Nella form ho già inserito il tipo di formato #.##0,00;#.##0,00;"" , in fase di visualizzazione e tutto corretto. Se invece clicco sopra la  textbox, in cui a livello di query ho effettuato la somma, e mi vengono visualizzati un numero maggiore di decimali rispetto a quanto visualizzato. 

Vi è modo di poter eliminare questa bruttura

11 Risposte

  • La TextBox di cui parli espone una proprietà “Numero Decimali”, imposta quella.

    Non so cosa ci devi fare con quel dato, ma fai attenzione che per calcoli con i decimali non è proprio indicatissimo… se poi fossero “€” ancora peggio.

  • Beh, dipende dagli addendi…

    supponiamo di avere una fattura dove calcoli pz. 5 prezzo ivato(22%) 5,00 il totale imponibile  è 20,49180327868852 anche se tu mascheri (perchè in effetti stai mascherando) la parte 180327868852 mostrando solo 20,49  e così per tutte le righe del corpo fattura,  alla fine avrai un risultato con n decimali.

    prova a memorizzare il prezzo riga troncato come standard vuole (credo esista una funzione apposita) in modo da avere come totale riga fino al centesimo e vedrai che la somma combacia anche se entri nel campo.

    in questo modo, chiunque carica quel documento non dovrà arrotondare totale iva e totale documento.

    la legge della matematica vuole che N+Q=Q (la somma di un intero con un razionale genera un numero appartenente all'insieme dei numeri razionali) ergo, se non ti fermi al centesimo ottieni:

    su 6 righe come sopra un totale di 122,9508196721311 che mascherato diventa 122.95 (20,49180327868852 * 5)

    quando ogni gestionale corretto deve riportare:

    20.49 * 6 =( 20.49+20.49+20.49+20.49+20.49+20.49)= 122.94

    in pratica costringi chi, con un gestionale serio carica quel documento, ad intervenire con la voce arrotondamento (attivo/passivo) di 1 centesimo fuori campo iva. l'estetica sarebbe l'ultimo dei problemi.

    morale: tronca i totali al centesimo e risolvi il tuo problema e quello degli altri gestionali.

  • Sihsandrea,

    in effetti hai ragione il problema non stà nella visualizzazione del dato ma quanto riportato in tabella, ho fatto una prova moltiplicando il valore per 100 e questo è il risultato da  2,13 a -213,000011444092. Ho provato anche a fare l'arrotondamento con round() ma nulla è cambiato 2,13000011444092.

    Qualche idea ?

    Dimenticano tutte le proprietà sia a livello di query  di tabella e  di maschera sono settate con numero decimali 3.

  • Devi salvare totale riga con round(x) o come hai chiamato quel campo. il resto dei calcoli li lasci fare a query e funzioni di access tanto lavora al centesimo.

    al salvataggio dei dati imponi che totaleriga=round(totaleriga).

    puoi usare tutti i decimali che vuoi, il problema è sempre sul totale riga che diventa imponibile.

    es. pz. 5 prezzo 23,4578999001 totale 117,29 non 117.2894995005 e nemmeno 117.28 (si arrotonda per eccesso o per difetto).

  • Considerare l'utilizzo del formato dati “Valuta” (indipendentemente dal fatto che il campo rappresenti valori monetari o meno), che non soffre del problema che affligge i formati a virgola mobile (e quello a precisione singola lo è) ed ha 4 cifre decimali gestite di suo. Se serve maggiore precisione ancora bisogna andare sul Numerico con Dimensione campo “Decimale”.

    Distinguere sempre quello che si vede dal contenuto vero.

  • 04/11/2024 - Philcattivocarattere ha scritto:


    Considerare l'utilizzo del formato dati “Valuta” (indipendentemente dal fatto che il campo rappresenti valori monetari o meno), che non soffre del problema che affligge i formati a virgola mobile (e quello a precisione singola lo è) ed ha 4 cifre decimali gestite di suo. Se serve maggiore precisione ancora bisogna andare sul Numerico con Dimensione campo “Decimale”.

    Distinguere sempre quello che si vede dal contenuto vero.

    +1

    Troppi confondono la Formattazione del dato con il dato.

  • 04/11/2024 - Philcattivocarattere ha scritto:

    Distinguere sempre quello che si vede dal contenuto vero.

    Quoto me stesso, e già questo è grave, in più parlo di Excel adesso. Orticaria. Una delle prime operazioni che faccio quando lo devo usare è andare ad abilitare l'opzione “Imposta approssimazione come visualizzata” (a chi interessa, si trova in Opzioni - Impostazioni avanzate - Durante il calcolo della cartella di lavoro …) Se ho 3 percentuali da 33,33% non voglio che la loro somma sia 100%! deve essere 99,99, anche se quel 33,33% deriva da un calcolo che ha il 3 periodico. Voglio 2 cifre decimali? quelle devono essere, punto. Senza tante funzioni di arrotondamento impostate a mano. E poi con Excel non vado d'accordo quindi ci saranno anche altri sistemi per ottenere la stessa cosa anche meglio ma dai tempi del 4.0 quella era e quella è rimasta la strada che uso.

  • Se vuoi usare decimali personalizzati, salvo ruggine, usa questa funzione dove passi l'importo e i decimali che vuoi.

    FUNCTION ARROTONDAMENTO (IMPORTO AS DOUBLE, DECIMALI AS INTEGER) AS DOUBLE
      DIM X AS INTEGER
      FOR X=0 TO DECIMALI
        IMPORTO=IMPORTO*10
      NEXT
      IMPORTO=INT(IMPORTO)
      IMPORTO=IMPORTO/10
      IF (IMPORTO-INT(IMPORTO))*10 < 5
        X=0
      ELSE 
        X=1
      END IF
      IMPORTO=INT(IMPORTO)+X
      FOR X=1 TO DECIMALI
        IMPORTO=IMPORTO/10
      NEXT
      ARROTONDAMENTO=IMPORTO
    END FUNCTION

    dovrebbe funzionare.

    Faccio ammenda…

  • 05/11/2024 - sihsandrea ha scritto:


      IMPORTO=TRUNC(IMPORTO)
    

    dovrebbe funzionare.

    Nella mia versione di Access (2013) la funzione Trunc non esiste (che poi sia banalmente creabile non si discute), forse esiste nelle versioni successive o in Office365 …

  • 04/11/2024 - Philcattivocarattere ha scritto:


    Considerare l'utilizzo del formato dati “Valuta” (indipendentemente dal fatto che il campo rappresenti valori monetari o meno), che non soffre del problema che affligge i formati a virgola mobile (e quello a precisione singola lo è) ed ha 4 cifre decimali gestite di suo. Se serve maggiore precisione ancora bisogna andare sul Numerico con Dimensione campo “Decimale”.

    Distinguere sempre quello che si vede dal contenuto vero.

    +1

    Io ho deciso di non usare il campo valuta perché avendo valute diverse da gestire mi urta vedere un simbolo non corretto. 

    Io utilizzo i campi decimal precisione 18 e scala 4 (14 interi e 4 decimali), sicuramente sovradimensionati per gli importi con i quali ho a che fare …

  • 05/11/2024 - max.riservo ha scritto:


    05/11/2024 - sihsandrea ha scritto:


      IMPORTO=TRUNC(IMPORTO)
    

    dovrebbe funzionare.

    Nella mia versione di Access (2013) la funzione Trunc non esiste (che poi sia banalmente creabile non si discute), forse esiste nelle versioni successive o in Office365 …

    Mi porto sempre dietro delphi….

    Comunque avevo premesso che sono arrugginito di access…

    ;))

Devi accedere o registrarti per scrivere nel forum
11 risposte