Somma progressiva tabella access

Copper Contributor

Buongiorno vorrei fare uma somma progressiva in una tabella access su un campo importo per ciscun mese all interno di ciascun anno..potete aiutarmi

 

---------Translated by Admin using Bing Translate ----------------------

Good morning I would like to make a progressive sum in an access table on an amount field for each month within each year .. can you help me

17 Replies

@Massimiliano_fois 

Thank you for posting, unfortunately you have posted in the community feedback area, we are unable to help you with specific products in this area.

 

I will move your post to the Microsoft Access community, be aware though the Microsoft Tech Community is a Primarily English community and you maybe better to post your question to Microsoft Answers, our official support community, who support Italian

 

------------------------------------Translated to Italian by and Admin using Bing Translate ------------------

 

Grazie per la pubblicazione, purtroppo hai pubblicato nell'area di feedback della community, non siamo in grado di aiutarti con prodotti specifici in quest'area.

 

Sposterò il tuo post nella community di Microsoft Access, fai attenzione anche se la Microsoft Tech Community è una community principalmente inglese e forse è meglio postare la tua domanda su Microsoft Answers, la nostra community di supporto ufficiale, che supporta l'italiano

@Massimiliano_fois 

 

Although this page is in English, it directly addresses your requirement. What you need is usually referred to as "A Running Total Query".

@George Hepworth puoi darmi maggiori dettagli?

Sorry but the language difference makes that quite difficult for me to do. However, you can probably get more information from the Italian version of that page. 

 

Also, there is at least one other participant in this forum who does speak Italian, so perhaps he'll see your post.

Salve,

 

Non puoi farlo in una tabella, ma in una query. Consulta il mio articolo FAQ in italiano a questo proposito.

 

Servus
Karl
Access News
Access DevCon

 

So bene di doverlo fare in una query ma il mio problema e questo...ho importi che si riferiscono a diversi anni ..la subquery quindi deve ricominiare una nuova somma progressiva ad ogni cambio di anno...cioe la somma progressiva deve essere all interno del singolo anno

Salve,

 

Nella domanda hai scritto solo "tabella". Da qui il suggerimento.

 

Negli esempi delle FAQ, c'è solo un ID come criterio. A seconda del metodo scelto, dovrai aggiungere o sostituire la clausola WHERE o la condizione con i tuoi criteri temporali. p.e.

 

SommaIncr: (Select Sum(importo) FROM Tabella as Temp WHERE Format([Temp].[Data],"yyyymm") = Format([Tabella].[Data], "yyyymm") AND [Temp].[Data] <= [Tabella].[Data])

 

Se questo non ti aiuta, fornisci i dettagli rilevanti:

 

Qual è il nome della tabella e dei campi coinvolti?

e/o

Quali espressioni o SQL hai provato finora?

 

Servus
Karl
Access News
Access DevCon

Allora la tabella so chiama MOV. Le colle sono ID_MOV, DATA, IMPORTO.
Mi serve fare la somma progressiva dell importo per ciascun mese all interno di ogni anno. Ad esempio devo poter confrontare la somma delle spese da gennaio a marzo 2021 con la somma delle spese da gennaio a marzo 2022...etc

Salve,

 

Dovremmo essere quasi a posto con il mio esempio precedente, se usi questo come nuova colonna in una query basata sulla tabella:

 

SommaIncr: (Select Sum(importo) FROM MOV AS Temp WHERE Format([Temp].[Data],"yyyymm") = Format([MOV].[Data], "yyyymm") AND [Temp].[Data] <= [MOV].[Data])

 

Ti dà il risultato che desideri? In caso contrario, descrivi esattamente cosa non funziona o il messaggio di errore e pubblica qui l'istruzione SQL completa della query.

 

Servus
Karl
Access News
Access DevCon

 

@Karl Donaubauer 

se inserisco il tuo sql mi chiede il valore del campo mov.data, in quanto tu hai chiamato l'sql "Temp" e non MOV

Salve,


Direi che l'espressione è corretta sulla base delle tue informazioni.

Ripeto: ... e pubblica qui l'istruzione SQL completa della query.

Altrimenti non si vede cosa succede nella query.

 

Servus
Karl
Access News
Access DevCon

 

Select Sum([importo].[data] from Mov as Temp where (((Format([temp].[data],"yyyymm"))=Format([mov].[data],"yyyymm") and ([temp].[data]<=[mov].[data]
Se inserisco questo sql mi da messaggio di errore:
mov.data.. inserire valore parametro

Salve,

 

Certo, se questa è la tua istruzione SQL completa. Ho scritto: "se usi questo come nuova colonna in una query basata sulla tabella". Significa:

  1. Crea una nuova query e inserisci la tabella MOV in quella query.

  2. Poi, nella visualizzazione struttura della query, copia in una colonna della griglia in basso e nella riga Campo l'intera espressione che ho scritto:
    SommaIncr: (Select Sum(importo) FROM MOV AS Temp WHERE Format([Temp].[Data],"yyyymm") = Format([MOV].[Data], "yyyymm") AND [Temp].[Data] <= [MOV].[Data])

  3. Poi puoi selezionare altri campi della tabella da visualizzare che ti interessano.

Gioco fatto.

 

Servus
Karl
Access News
Access DevCon

Se vado a fare il group by per mese e anno mi dice che la query non include l espressione DATA come parte di una funzione di aggregazione

Salve,

 

Creare correttamente una query raggruppata è un problema diverso. È stato risolto il problema di cui abbiamo discusso finora, ovvero il totale progressivo per mesi?


Per valutare questo, lascia per il momento il raggruppamento e ordina prima la query in base al campo "Dati" in ordine crescente. Funziona finora?

 

In caso contrario, scrivi cosa non funziona.


E dato che vuoi raggruppare, forse non ho capito bene su quali intervalli di tempo vuoi il totale progressivo. Magari fornisci qualche esempio di record che hai e di come dovrebbero apparire nel risultato.

 

Servus
Karl
Access News
Access DevCon

 

Sono riuscito a risolvere con questo sql:
Select year(data) As anno, month(data) as mese, sum(importo) as tot, dsum("importo", "mov", "year(data)=" & year(data) & " and month(data)<=" & month(data)) as prog from mov group by year(data), month(data).
Il mio obiettivo e confrontare le somme progressive dei mesi in vari anni.
Ho provato a fare una query a campi incrociati su quel sql che ti ho scritto mettendo i mesi in colonna gli anni in riga e la dsum tra i valori. Ma mi risponde che nell sql ce un errore di sintassi forse perché quel numero appate come stringa di testo e non come numero. Ho provato con la formula formatnumber ma non funziona .sapresti aiutarmi?
Riposto l sql perche lo ha tradotto male :
Select year(data) As anno, month(data) as mese, sum(importo) as tot, dsum("importo", "mov", "year(data)=" & year( data) & " e month(data)<=" & month(data)) as prog from mov group by year(data), month(data).