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:

  1. Aprire il database di esempio Northwind.

  2. Creare una nuova query di selezione e aggiungere la tabella Orders .

  3. Scegliere Totali dal menu Visualizza.

    Nota In Access 2007 fare clic su Totali nel gruppo Mostra/Nascondi della scheda Progettazione .

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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:

  1. Aprire il Northwind.mdb di database di esempio.

  2. Creare una nuova query di selezione e aggiungere la tabella Orders.

  3. Scegliere Totali dal menu Visualizza.

    Nota In Access 2007 fare clic su Totali nel gruppo Mostra/Nascondi della scheda Progettazione .

  4. 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.

  5. 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.

  6. 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.

  7. 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