Come creare una query sui totali in esecuzione in Microsoft Access
Avanzate: richiede competenze esperte di codifica, interoperabilità e multiutente.
Questo articolo si applica a un file di database di Microsoft Access (con estensione .mdb) oppure a un file di database di Microsoft Access (con estensione .accdb).
Riepilogo
Questo articolo illustra due metodi che è possibile usare per creare una query sui totali in esecuzione. Una query sui totali in esecuzione è una query in cui il totale per ogni record è una somma di tale record e di tutti i record precedenti. Questo tipo di query è utile per visualizzare i totali cumulativi in un gruppo di record (o in un periodo di tempo) in un grafico o in un report.
Nota È possibile visualizzare una dimostrazione della tecnica usata in questo articolo nel file di esempio Qrysmp00.exe.
Ulteriori informazioni
Metodo 1
Il primo metodo usa una funzione DSum e criteri in una query per creare una somma in esecuzione nel tempo. La funzione DSum somma il record corrente e tutti i record precedenti. Quando la query passa al record successivo, la funzione DSum viene eseguita di nuovo e aggiorna il totale cumulativo.
Nella query di esempio seguente viene utilizzata la tabella Orders del database di esempio Northwind per creare una somma in esecuzione dei costi di spedizione per ogni mese nel 1997. I dati di esempio sono limitati a un anno per motivi di prestazioni. Poiché la funzione DSum viene eseguita una volta per ogni record della query, potrebbero essere necessari alcuni secondi (a seconda della velocità del computer) per completare l'elaborazione della query. Per creare ed eseguire questa query, seguire questa procedura:
Aprire il database di esempio Northwind.
Creare una nuova query di selezione e aggiungere la tabella Orders .
Scegliere Totali dal menu Visualizza.
Nota In Access 2007 fare clic su Totali nel gruppo Mostra/Nascondi della scheda Progettazione .
Nella prima colonna della griglia di progettazione della query digitare l'espressione seguente nella casella Campo ed effettuare le selezioni seguenti per le caselle Totale, Ordina e Mostra:
Field: AYear: DatePart("yyyy",[OrderDate]) Total: Group By Sort: Ascending Show: Yes
L'espressione nella casella Campo visualizza e ordina la parte relativa all'anno del campo OrderDate.
Nella seconda colonna della griglia di progettazione della query digitare l'espressione seguente nella casella Campo ed effettuare le selezioni seguenti per le caselle Totale, Ordina e Mostra:
Field: AMonth: DatePart("m",[OrderDate]) Total: Group By Sort: Ascending Show: Yes
L'espressione nella casella Campo ordina e visualizza la parte relativa al mese del campo Data ordine come valore intero compreso tra 1 e 12.
Nella terza colonna della griglia di progettazione della query digitare l'espressione seguente nella casella Campo ed effettuare le selezioni seguenti per le caselle Totale e Mostra.
NOTA Nell'esempio seguente viene usato un carattere di sottolineatura (_) alla fine di una riga come carattere di continuazione della riga. Rimuovere il carattere di sottolineatura dalla fine della riga quando si ricrea questo esempio.
Field: RunTot: DSum("Freight","Orders","DatePart('m', _ [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', _ [OrderDate])<=" & [AYear] & "") Total: Expression Show: Yes
L'espressione nella casella Campo utilizza la funzione DSum() per sommare il campo Freight quando i valori nei campi AMonth e AYear sono minori o uguali al record corrente elaborato dalla query.
Nella quarta colonna della griglia di progettazione della query digitare l'espressione seguente nella casella Campo ed effettuare le selezioni seguenti per le caselle Totale, Ordina e Mostra:
Field: FDate: Format([OrderDate],"mmm") Total: Group By Sort: Ascending Show: Yes
L'espressione nella casella Campo viene visualizzata ogni mese in un formato testuale, ad esempio Gen, Feb, Mar e così via.
Nella quinta colonna della griglia di progettazione della query digitare l'espressione seguente nella casella Campo ed effettuare le selezioni seguenti per le caselle Totale, Criteri e Mostra:
Field: DatePart("yyyy",[OrderDate]) Total: Where Criteria: 1997 Show: No
L'espressione nella casella Campo filtra il recordset della query in modo da includere solo i dati del 1997.
Eseguire la query. Si noti che nel campo RunTot vengono visualizzati i record seguenti con una somma in esecuzione:
AYear AMonth RunTot FDate -------------------------------------- 1997 1 2238.98 Jan 1997 2 3840.43 Feb 1997 3 5729.24 Mar 1997 4 8668.34 Apr 1997 5 12129.74 May 1997 6 13982.39 Jun 1997 7 17729.29 Jul 1997 8 22204.73 Aug 1997 9 26565.26 Sep 1997 10 32031.38 Oct 1997 11 36192.09 Nov 1997 12 42748.64 Dec
Metodo 2
Il secondo metodo usa una query totals con una funzione DSum() per creare un totale in esecuzione su un gruppo.
Nella query di esempio seguente viene utilizzata la tabella Orders per sommare i costi di trasporto per dipendente e per calcolare una somma corrente del carico. Per creare ed eseguire la query, seguire questa procedura:
Aprire il Northwind.mdb di database di esempio.
Creare una nuova query di selezione e aggiungere la tabella Orders.
Scegliere Totali dal menu Visualizza.
Nota In Access 2007 fare clic su Totali nel gruppo Mostra/Nascondi della scheda Progettazione .
Nella prima colonna della griglia di progettazione della query aggiungere il campo seguente alla casella Campo ed effettuare le selezioni seguenti per le caselle Totale e Mostra:
Field: EmpAlias: EmployeeID Total: Group By Show: Yes
Questo campo raggruppa i dati in base a EmployeeID.
Nella seconda colonna della griglia di progettazione della query aggiungere il campo seguente alla casella Campo ed effettuare le selezioni seguenti per le caselle Totale e Mostra:
Field: Freight Total: Sum Show: Yes
Questo campo somma i dati di spedizione.
Nella terza colonna della griglia di progettazione della query digitare l'espressione seguente nella casella Campo ed effettuare le selezioni seguenti per le caselle Totale e Mostra.
NOTA Nell'esempio seguente viene usato un carattere di sottolineatura (_) alla fine di una riga come carattere di continuazione della riga. Rimuovere il carattere di sottolineatura dalla fine della riga quando si ricrea questo esempio.
Field: RunTot: Format(DSum("Freight","Orders","[EmployeeID]<=" _& [EmpAlias] & ""),"$0,000.00") Total: Expression Show: Yes
L'espressione nella casella Campo utilizza una funzione DSum() per sommare il campo Freight quando l'ID dipendente è minore o uguale all'EmpAlias corrente e quindi formatta il campo in dollari.
Eseguire la query. Si noti che nel campo RunTot vengono visualizzati i record seguenti con una somma in esecuzione:
Employee SumOfFreight RunTot ------------------------------------------------- Davolio, Nancy $8,836.64 $8,836.64 Fuller, Andrew $8,696.41 $17,533.05 Leverling,Janet $10,884.74 $28,417.79 Peacock, Margaret $11,346.14 $39,763.93 Buchanan, Steven $3,918.71 $43,682.64 Suyama, Michael $3,780.47 $47,463.11 King, Robert $6,665.44 $54,128.55 Callahan, Laura $7,487.88 $61,616.43 Dodsworth, Anne $3,326.26 $64,942.69
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per