Campo calcolato tabella e qry

di il
16 risposte

Campo calcolato tabella e qry

Salve a tutti, premetto che sono un neofita di Access e magari a qualcuno il mio problema sembrerà banale ma non riesco a trovare una soluzione.
Ho una tabella Dettagli_fattura che contiene
Id dettaglio (chiave)
qta
descrizione
Prezzo.u
Totale (valore calcolato qta*Prezzo.u)

In seguito ho creato una query che fa la somma dei tutti i campi Totale della tabella dettagli_fattura e qui arriva il problema... la somma corretta ad esempio è 1736,28 la qry mi restituisce 1735.
Il campo totale della tabella mi propone i valori con tutte le cifre decimali.
Se lo stesso campo invece di calcolarlo lo digito tutto funziona correttamente nella qry.
Qualcuno sa dirmi perchè...
Ringrazio tutti anticipatamente

16 Risposte

  • Re: Campo calcolato tabella e qry

    A parte il fatto che non utilizzerei il campo Totale nel dettaglio, qual è la query che usi ?

    Fai un esempio di tutte le righe che ti portano a quel totale sbagliato.
  • Re: Campo calcolato tabella e qry

    Ti allego un'immagine con i campi della tabella e la struttura della query e il risultato
  • Re: Campo calcolato tabella e qry

    Scusami ... puoi mostrare la query ?
  • Re: Campo calcolato tabella e qry

    Scusami forse intendevi l'SQL?
    SELECT DISTINCTROW Dettagli_fattura.IdFattura, Sum(Dettagli_fattura.Totale) AS [Somma Di Totale], Trunca([Somma Di Totale]*0.1,3) AS IVA, [Somma Di Totale]+[IVA] AS [Totale Fattura]
    FROM Dettagli_fattura
    GROUP BY Dettagli_fattura.IdFattura
    HAVING (((Dettagli_fattura.IdFattura)=[Maschere]![Fatture1]![IdFattura]));
    Se non è neanche questo indicami come fare please....
  • Re: Campo calcolato tabella e qry

    aquagan ha scritto:


    Trunca([Somma Di Totale]*0.1,3)
    Ti toglie 1,3 quindi l' errore dovrebbe essere qui vicino..... dovrebbe....
  • Re: Campo calcolato tabella e qry

    La funzione tronca non c'entra perché mi sbaglia la somma dei totali dove non viene utilizzata e se i valori del tabella li digito invece di calcolarli funziona tranquillamente.
  • Re: Campo calcolato tabella e qry

    aquagan ha scritto:


    Scusami forse intendevi l'SQL?
    SELECT DISTINCTROW Dettagli_fattura.IdFattura, Sum(Dettagli_fattura.Totale) AS [Somma Di Totale], Trunca([Somma Di Totale]*0.1,3) AS IVA, [Somma Di Totale]+[IVA] AS [Totale Fattura]
    FROM Dettagli_fattura
    GROUP BY Dettagli_fattura.IdFattura
    HAVING (((Dettagli_fattura.IdFattura)=[Maschere]![Fatture1]![IdFattura]));
    Se non è neanche questo indicami come fare please....
    Perché usi DISTINCTROW?
    Trunca è una funzione personalizzata per il calcolo dell'IVA? (anche se questo non dovrebbe influire... ops hai già risposto, come previsto)
    Prima prova a togliere DISTINCTROW. Potrebbe cambiare già così.
    Poi... non è "colpa tua" ma di QBE: perchè usare having... cambialo tu in SQL
    SELECT Dettagli_fattura.IdFattura, Sum(Dettagli_fattura.Totale) AS [Somma Di Totale],
    Trunca([Somma Di Totale]*0.1,3) AS IVA, [Somma Di Totale]+[IVA] AS [Totale Fattura]
    FROM Dettagli_fattura
    WHERE (Dettagli_fattura.IdFattura)=[Maschere]![Fatture1]![IdFattura]
    GROUP BY Dettagli_fattura.IdFattura;
    Ulteriore controllo: da QBE guarda il formato nelle proprietà del campo [Somma Di Totale] (probabilmente uno scrupolo inutile, dovrebbe essere sufficiente modificare la query come scritto sopra)
  • Re: Campo calcolato tabella e qry

    Cosa è Trunca ?

    Sei sicuro che non restituisca un valore intero?
  • Re: Campo calcolato tabella e qry

    Philcattivocarattere ha scritto:


    Trunca è una funzione personalizzata per il calcolo dell'IVA? (anche se questo non dovrebbe influire... ops hai già risposto, come previsto)

    oregon ha scritto:


    Cosa è Trunca ?
    Però a questo punto il sospetto viene... magari va a modificare il campo che gli si sottopone? postala, se quanto detto prima riguardo la sintassi della query non risolve.
  • Re: Campo calcolato tabella e qry

    Ok più tardi posto la funzione. La funzione tronca la uso per eliminare l'arrotondamento causato dal calcolo della percentuale iva. Dopo applico i vari suggerimenti. Intanto ringrazio tutti
  • Re: Campo calcolato tabella e qry

    aquagan ha scritto:


    Ok più tardi posto la funzione. La funzione tronca la uso per eliminare l'arrotondamento causato dal calcolo della percentuale iva. Dopo applico i vari suggerimenti. Intanto ringrazio tutti
    L'importante è che agisca solo sul risultato e non sulla base imponibile modificandone il valore nella query, altrimenti è lì il problema.
    Ai posteri (=quelli che postano) l'ardua sentenza.
  • Re: Campo calcolato tabella e qry

    Philcattivocarattere ho provato ad eliminare DISTINCTROW ma non cambia nulla.

    Ecco il codice della funzione tronca
    Function Trunca(ByVal Numero, cifre) As Double
    Dim X, num, dec, dezero, numcifre
    numcifre = cifre + 2  'dobbiamo aggiungere due cifre al numero che indicherete come troncamento (lo 0 e la virgola)
    X = CDec(Numero)
    If Left(X, 1) > 0 Then
    num = Int(X)
    dec = X - num
    dezero = Left(dec, numcifre)
    Trunca = num + dezero
    Exit Function
    Else
    Trunca = Left(X, numcifre)
    Exit Function
    End If
    End Function
    
  • Re: Campo calcolato tabella e qry

    aquagan ha scritto:


    Philcattivocarattere ho provato ad eliminare DISTINCTROW ma non cambia nulla.
    Ecco il codice della funzione tronca
    Function Trunca(ByVal Numero, cifre) As Double
    ...
    End Function
    
    Allora è colpa di Trunca(). Per verifica, volante, cambia la query sostituendo
    Trunca([Somma Di Totale]*0.1,3) AS IVA
    con
    ([Somma Di Totale]*0.1) AS IVA
    e vedi subito.
    Per la soluzione... un attimo che penso
  • Re: Campo calcolato tabella e qry

    Philcattivocarattere ha scritto:


    aquagan ha scritto:


    Philcattivocarattere ho provato ad eliminare DISTINCTROW ma non cambia nulla.
    Ecco il codice della funzione tronca
    Function Trunca(ByVal Numero, cifre) As Double
    ...
    End Function
    
    Allora è colpa di Trunca()....
    Per la soluzione... un attimo che penso
    Soluzione volante: non applicare la funzione Trunca sul campo [Somma di Totale] ma sulla formula con il quale è stato calcolato, quindi
    Trunca(Sum(Dettagli_fattura.Totale)*0.1,3) AS IVA
    così la base imponibile iva in [Somma di totale] non viene toccata.
Devi accedere o registrarti per scrivere nel forum
16 risposte