Saldo progressivo con la funzione DSum

di il
17 risposte

Saldo progressivo con la funzione DSum

In una tabella ho i campi:
ID
Data
Tipo Operatore
Incasso
Pagamento

In una query ho un campo:
data
tipo operatore
incasso
pagamento
e l'alias Saldo: [Incasso] - [Pagamenti]

Il campo Saldo funziona per singola data, ma avrei bisogno di un campo "progressivo" che cresca o diminuisca data dopo data.
Ho dato un'occhiata alla funzione DSum che dovrebbe fare il saldo progressivo, ed ho inserito questa funzione:
Saldo: DSum([Incasso]-[Pagamento];[tblPrimaNota];"[tblPrimaNota].ID<=" & [tblPrimaNota].[ID])
Mi da errore !!
Anche quest'altra funzione mi da errore:
Progressivo: DSum([Saldo];[tblPrimaNota];"[tblPrimaNota].ID<=" & [tblPrimaNota].[ID])
In particolare non viene riconosciuto il campo [tblPrimaNota]

Come si può fare ?

Buona domenica a tutti !

17 Risposte

  • Re: Saldo progressivo con la funzione DSum

    Sempre in merito a questa funzione DSum, avete esperienza di nidificazione di funzioni al suo interno ?
    Cioè nei criteri di DSum è possibile aggiungere altre funzioni ?
  • Re: Saldo progressivo con la funzione DSum

    Credo, se ho capito, tu abbia necessità di qualche cosa di simile:

    https://theaccessbuddy.wordpress.com/2014/05/04/using-ms-access-to-create-a-running-total-or-a-cumulative-sum-part-1-of-2/
    http://accessdatabasetutorial.com/2014/05/12/how-to-create-a-running-totals-query-in-microsoft-access/

    Per la 2° Domanda, la risposta "STUPIDA" che ti si può dare è si..., ma prendila come stupida non avendo chiaro di cosa parli... perchè se l'intento è rendere la RICORSIONE chiaramente non si fa così...!
  • Re: Saldo progressivo con la funzione DSum

    Ti ringrazio delle indicazioni.
    Ho fatto una prova con le istruzioni contenute nel primo link.
    Ho ripetuto passo passo quanto riportato, ho aperto il file northwind, ho creato la query con tutte le istruzioni riportate, ma nella colonna Run Tot mi da #ERRORE.
    La funzione DSum che ho riportato nella query è:
    Run Tot: DSum("Trasporto";"Ordini";"DatePart('m';[DataOrdine])<=" & [A Month] & " And DatePart('aaaa';[DataOrdine])<=" & [A Year] & "")
    Dove sta l'errore ?
  • Re: Saldo progressivo con la funzione DSum

    Se quello che ti ho indicato è quello che cerchi direi che leggendo BENE l'articolo è guardando Northwind dovresti risolvere....
    Togli gli spazzi nei nomi.... per il resto che dirti senza avere nulla su cui lavorare...?
  • Re: Saldo progressivo con la funzione DSum

    Ho fatto delle prove con le istruzioni riportate nel primo link postato da Alex.
    In quel link ci sono due metodi per ottenere un totale parziale. Il primo metodo riguarda una somma parziale nel corso del tempo, il secondo metodo un totale parziale di un gruppo.
    Con il secondo metodo sono riuscito ad avere un saldo di un conto corrente, mettendo i movimenti in una sola colonna, e segnando con il meno i prelevamenti. La formula: Saldo: DSum("[Importo]";"[BANCA]";"[IDBanca]<=" & [IDBanca]) funziona, anche se non riesco a dargli il formato valuta.

    Con il primo metodo basato sulla funzione DatePart, non riesco ad ottenere il saldo. Avete avuto esperienze con le formule DSum combinata con DatePart ?
  • Re: Saldo progressivo con la funzione DSum

    Perchè invece di usare DatePart non usi Month(....) e Year(....)
  • Re: Saldo progressivo con la funzione DSum

    Ho provato con quelle due formule. Anche se funzionano, e la mia formula è:
    Saldo: DSum("[Trasporto]";"[Ordini]";"[IDOrdine]<=" & [IDOrdine] And "[Mese]<=" & [Mese] And "[Anno]<=" & [Anno])
    mi ritrovo lungo tutti i record il totale generale della colonna Trasporto. Quindi la somma non è progressiva !
    Nei criteri ho usato, l'IDOrdine, il Mese ottenuto con Month([DataOrdine]), e l'Anno ottenuto con Year([DataOrdine]).
    Cosa sfugge ?
  • Re: Saldo progressivo con la funzione DSum

    ProgrammD ha scritto:


    Ho provato con quelle due formule. Anche se funzionano, e la mia formula è:
    Saldo: DSum("[Trasporto]";"[Ordini]";"[IDOrdine]<=" & [IDOrdine] And "[Mese]<=" & [Mese] And "[Anno]<=" & [Anno])
    mi ritrovo lungo tutti i record il totale generale della colonna Trasporto. Quindi la somma non è progressiva !
    Nei criteri ho usato, l'IDOrdine, il Mese ottenuto con Month([DataOrdine]), e l'Anno ottenuto con Year([DataOrdine]).
    Cosa sfugge ?
    Non ho seguito la storia dell'intero thread, intervengo solo su un "errore" che vedo in questo post.
    Sbagliato
    DSum("[Trasporto]";"[Ordini]";"[IDOrdine]<=" & [IDOrdine] And "[Mese]<=" & [Mese] And "[Anno]<=" & [Anno])
    Giusto (spero)
    DSum("[Trasporto]";"[Ordini]";"[IDOrdine]<=" & [IDOrdine] & " And [Mese]<=" & [Mese] & " And [Anno]<=" & [Anno])
    Gli AND erano fuori dalla stringa che costituisce l'equivalente in DSum di una WhereCondition.
    Strano che non abbia dato errore di sintassi prima.
  • Re: Saldo progressivo con la funzione DSum

    Philcattivocarattere ha scritto:


    ProgrammD ha scritto:


    Ho provato con quelle due formule. Anche se funzionano, e la mia formula è:
    Saldo: DSum("[Trasporto]";"[Ordini]";"[IDOrdine]<=" & [IDOrdine] And "[Mese]<=" & [Mese] And "[Anno]<=" & [Anno])
    mi ritrovo lungo tutti i record il totale generale della colonna Trasporto. Quindi la somma non è progressiva !
    Nei criteri ho usato, l'IDOrdine, il Mese ottenuto con Month([DataOrdine]), e l'Anno ottenuto con Year([DataOrdine]).
    Cosa sfugge ?
    Non ho seguito la storia dell'intero thread, intervengo solo su un "errore" che vedo in questo post.
    Sbagliato
    DSum("[Trasporto]";"[Ordini]";"[IDOrdine]<=" & [IDOrdine] And "[Mese]<=" & [Mese] And "[Anno]<=" & [Anno])
    Giusto (spero)
    DSum("[Trasporto]";"[Ordini]";"[IDOrdine]<=" & [IDOrdine] & " And [Mese]<=" & [Mese] & " And [Anno]<=" & [Anno])
    Gli AND erano fuori dalla stringa che costituisce l'equivalente in DSum di una WhereCondition.
    Strano che non abbia dato errore di sintassi prima.
    Con la Tua formula non funziona.
    Se, nei criteri della funzione DSum, uso solo il campo ID della tabella, ottengo il totale progressivo, con le date niente.
  • Re: Saldo progressivo con la funzione DSum

    @ProgrammD come hai risolto? anche io ho lo stesso problema
  • Re: Saldo progressivo con la funzione DSum

    Ho risolto in questo modo:
    Saldo: Format(DSum("[Versamento]-[Prelevamento]";"[Conto]";"[IDConto]<=" & [IDConto]);"€ 0,00")

    Usando le date al posto di IDConto, non funziona. Forse è un problema legato alla formattazione del campo data nella maschera.
  • Re: Saldo progressivo con la funzione DSum

    No è impossibile dipenda dalla data, dipende sicuramente dal modo in cui viene usata la data sia in fase di inserimento che di utilizzo.
    Il Campo data è rappresentabile con un LONG INTEGER oppure conun DOUBLE se ha hh:mm:ss, quindi come fosse un counter, basta fare CLNG(CampoData) per verificare, quindi se le date sono in progressione e gestite deve andare.
  • Re: Saldo progressivo con la funzione DSum

    Grazie del suggerimento @Alex ho fatto qualcosa di simile e ho risolto
  • Re: Saldo progressivo con la funzione DSum

    Ho risolto anche io.
    Però ora viene la parte divertente.
    Il campo calcolato è ottenuto con una query, e la maschera ha come origine dati la query.
    Se voglio sapere il totale delle vendite da una data ad un'altra, basta mettere nei criteri della query le parentesi quadre nel campo data, oppure si procede con macro/vba ?
Devi accedere o registrarti per scrivere nel forum
17 risposte