Utenti esperti: sono richieste conoscenze avanzate di gestione di codice, interoperabilità e funzioni multiutente.


Le informazioni contenute in questo articolo si applicano ai database di Microsoft Access (mdb) o di Microsoft Access 2007 (accdb).Per la versione di questo articolo relativa a Microsoft Access 2000, vedere
208714.

Per la versione di questo articolo relativa a Microsoft Access 97, vedere
138911.

Sommario

In questo articolo vengono descritti due metodi utilizzabili per creare una query di totali parziali, ossia una query in cui il totale di ciascun record costituisce la somma di tale record e degli eventuali record precedenti. Questo tipo di query è utile per visualizzare in un grafico o in un report i totali cumulativi di un gruppo di record o di un periodo di tempo.

Nota Nel file di esempio Qrysmp00.exe è possibile visualizzare una dimostrazione della tecnica utilizzata in questo articolo. Per informazioni su come ottenere questo file, vedere il seguente articolo della Microsoft Knowledge Base:

207626 ACC2000: Query di esempio di Microsoft Access 2000 disponibili nell'Area download Microsoft

Informazioni

Metodo 1

Il primo metodo utilizza in una query la funzione DSum e i criteri per creare una somma parziale nel corso del tempo. La funzione DSum somma il record corrente e gli eventuali record precedenti. Quando la query passa al record successivo, la funzione DSum viene nuovamente eseguita e il totale cumulativo viene aggiornato.

La seguente query di esempio utilizza la tabella
Ordini del database di esempio Northwind per creare una somma parziale dei costi di trasporto per ciascun mese del 1997. I dati di esempio sono limitati a un solo anno per ragioni di prestazioni. Poiché la funzione DSum viene eseguita una volta per ciascun record della query, possono essere necessari diversi secondi per completare l'elaborazione della query, a seconda della velocità del computer. Per creare ed eseguire questa query, attenersi alla seguente procedura:

  1. Aprire il database di esempio Northwind.

  2. Creare una nuova query di selezione ed aggiungere la tabella Ordini.

  3. Scegliere Totali dal menu Visualizza.

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

  4. Nella prima colonna della griglia di struttura della query, digitare l'espressione seguente nella casella Campo, quindi effettuare le selezioni seguenti per le caselle Totale, Ordinamento e Mostra:
    Campo: AYear: DatePart("yyyy",[Data ordine])
    Totale: Raggruppa per
    Ordinamento: Crescente
    Mostra: Sì L'espressione nella casella Campo visualizza e ordina la parte anno del campo Data ordine.

  5. Nella seconda colonna della griglia di struttura della query, digitare l'espressione seguente nella casella Campo, quindi effettuare le selezioni seguenti per le caselle Totale, Ordinamento e Mostra:
    Campo: AMonth: DatePart("m",[Data ordine])
    Totale: Raggruppa per
    Ordinamento: Crescente
    Mostra: Sì L'espressione nella casella Campo ordina e visualizza la parte mese del campo Data ordine come valore intero compreso tra 1 e 12.

  6. Nella terza colonna della griglia di struttura della query, digitare l'espressione seguente nella casella Campo, quindi effettuare le selezioni seguenti per le caselle Totale e Mostra.

    NOTA: nell'esempio che segue, al termine di una riga viene utilizzato un segno di sottolineatura (_) come carattere di continuazione della riga. Rimuovere tale carattere quando si ricrea l'esempio.
    Campo: RunTot: DSum("Trasporto","Ordini","DatePart('m', _
    [Data ordine])<=" & [AMonth] & " And DatePart('yyyy', _
    [Data ordine])<=" & [AYear] & "")
    Totale: Espressione
    Mostra: Sì L'espressione nella casella Campo utilizza la funzione DSum() per sommare il campo Trasporto quando i valori dei campi AMonth e AYear sono inferiori o uguali al record corrente che la query sta elaborando.

  7. Nella quarta colonna della griglia di struttura della query, digitare l'espressione seguente nella casella Campo, quindi effettuare le selezioni seguenti per le caselle Totale, Ordinamento e Mostra:
    Campo: FDate: Format([Data ordine],"mmm")
    Totale: Raggruppa per
    Ordinamento: Crescente
    Mostra: Sì L'espressione nella casella Campo visualizza ciascun mese in formato testo, ad esempio Gen, Feb, Mar e così via.

  8. Nella quinta colonna della griglia di struttura della query, digitare l'espressione seguente nella casella Campo, quindi effettuare le selezioni seguenti per le caselle Totale, Criteri e Mostra:
    Campo: DatePart("yyyy",[Data ordine])
    Totale: Dove
    Criteri: 1997
    Mostra: No L'espressione nella casella Campo filtra il recordset della query affinché siano inclusi solo i dati del 1997.

  9. Eseguire la query. Notare che nel campo RunTot vengono visualizzati i seguenti record con una somma parziale:
    AYear AMonth RunTot FDate
    --------------------------------------
    1997 1 2238,98 Gen
    1997 2 3840,43 Feb
    1997 3 5729,24 Mar
    1997 4 8668,34 Apr
    1997 5 12129,74 Mag
    1997 6 13982,39 Giu
    1997 7 17729,29 Lug
    1997 8 22204,73 Ago
    1997 9 26565,26 Set
    1997 10 32031,38 Ott
    1997 11 36192,09 Nov
    1997 12 42748,64 Dic

Metodo 2

Il secondo metodo utilizza una query di totali con la funzione DSum() per creare un totale parziale di un gruppo.

Nella seguente query di esempio viene utilizzata la tabella Ordini per sommare i costi di trasporto per dipendente nonché per calcolare la somma parziale del trasporto. Per creare ed eseguire la query, attenersi alla seguente procedura:

  1. Aprire il database di esempio Northwind.mdb.

  2. Creare una nuova query di selezione ed aggiungere la tabella Ordini.

  3. Scegliere Totali dal menu Visualizza.

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

  4. Nella prima colonna della griglia di struttura della query, aggiungere il seguente campo alla casella Campo, quindi effettuare le selezioni seguenti per le caselle Totale e Mostra:
    Campo: EmpAlias: Impiegato
    Totale: Raggruppa per
    Mostra: Sì
    Questo campo raggruppa i dati per impiegato.

  5. Nella seconda colonna della griglia di struttura della query, aggiungere il seguente campo alla casella Campo, quindi effettuare le selezioni seguenti per le caselle Totale e Mostra:
    Campo: Trasporto
    Totale: Somma
    Mostra: Sì
    Questo campo somma i dati sul trasporto.

  6. Nella terza colonna della griglia di struttura della query, digitare l'espressione seguente nella casella Campo, quindi effettuare le selezioni seguenti per le caselle Totale e Mostra.

    NOTA: nell'esempio che segue, al termine di una riga viene utilizzato un segno di sottolineatura (_) come carattere di continuazione della riga. Rimuovere tale carattere quando si ricrea l'esempio.
    Campo: RunTot: Format(DSum("Trasporto","Ordini","[Impiegato]<=" _
    & [EmpAlias] & ""),"$0,000.00")
    Totale: Espressione
    Mostra: Sì
    L'espressione nella casella Campo utilizza la funzione DSum() per sommare il campo Trasporto quando il valore di Impiegato è inferiore o uguale al valore corrente di EmpAlias, quindi formatta il campo in dollari.

  7. Eseguire la query. Notare che nel campo RunTot vengono visualizzati i seguenti record con una somma parziale:
    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

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×