Een query voor lopende totalen maken in Microsoft Access

Geavanceerd: vereist professionele codering, interoperabiliteit en vaardigheden voor meerdere gebruikers.

Dit artikel is van toepassing op een Microsoft Access-databasebestand (.mdb) of op een Microsoft Access-databasebestand (.accdb).

Samenvatting

In dit artikel worden twee methoden beschreven die u kunt gebruiken om een query voor actieve totalen te maken. Een query voor lopende totalen is een query waarin het totaal voor elke record een optelsom is van die record en eventuele eerdere records. Dit type query is handig voor het weergeven van cumulatieve totalen voor een groep records (of gedurende een bepaalde periode) in een grafiek of rapport.

Opmerking U ziet een demonstratie van de techniek die in dit artikel wordt gebruikt in het voorbeeldbestand Qrysmp00.exe.

Meer informatie

Methode 1

De eerste methode maakt gebruik van een DSum-functie en criteria in een query om een lopende som in de loop van de tijd te maken. De functie DSum somt de huidige record en eventuele eerdere records op. Wanneer de query naar de volgende record wordt verplaatst, wordt de functie DSum opnieuw uitgevoerd en wordt het cumulatieve totaal bijgewerkt.

In de volgende voorbeeldquery wordt de tabel Orders uit de voorbeelddatabase Northwind gebruikt om een lopende som van de vrachtkosten voor elke maand in 1997 te maken. De voorbeeldgegevens zijn om prestatieredenen beperkt tot één jaar. Omdat de functie DSum eenmaal wordt uitgevoerd voor elke record in de query, kan het enkele seconden duren (afhankelijk van de snelheid van uw computer) voordat de query is verwerkt. Voer de volgende stappen uit om deze query te maken en uit te voeren:

  1. Open de voorbeelddatabase Northwind.

  2. Maak een nieuwe selectiequery en voeg de tabel Orders toe.

  3. Klik in het menu Beeld op Totalen.

    Opmerking Klik in Access 2007 op Totalen in de groep Weergeven/verbergen op het tabblad Ontwerpen .

  4. Typ in de eerste kolom van het queryontwerpraster de volgende expressie in het vak Veld en maak de volgende selecties voor de vakken Totaal, Sorteren en Weergeven:

    Field: AYear: DatePart("yyyy",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    Met de expressie in het vak Veld wordt het jaargedeelte van het veld OrderDate weergegeven en gesorteerd.

  5. Typ in de tweede kolom van het queryontwerpraster de volgende expressie in het vak Veld en maak de volgende selecties voor de vakken Totaal, Sorteren en Weergeven:

    Field: AMonth: DatePart("m",[OrderDate])
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    De expressie in het vak Veld sorteert en geeft het maandgedeelte van het veld Orderdatum weer als een geheel getal tussen 1 en 12.

  6. Typ in de derde kolom van het queryontwerpraster de volgende expressie in het vak Veld en maak de volgende selecties voor de vakken Totaal en Weergeven.

    OPMERKING In het volgende voorbeeld wordt een onderstrepingsteken (_) aan het einde van een regel gebruikt als een regelvolgteken. Verwijder het onderstrepingsteken van het einde van de regel wanneer u dit voorbeeld opnieuw maakt.

    Field: RunTot: DSum("Freight","Orders","DatePart('m', _
    [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', _
    [OrderDate])<=" & [AYear] & "")
    Total: Expression
    Show: Yes
    

    In de expressie in het vak Veld wordt de functie DSum() gebruikt om het veld Vracht op te tellen wanneer de waarden in zowel de velden AMonth als AYear kleiner zijn dan of gelijk zijn aan de huidige record die door de query wordt verwerkt.

  7. Typ in de vierde kolom van het queryontwerpraster de volgende expressie in het vak Veld en maak de volgende selecties voor de vakken Totaal, Sorteren en Weergeven:

    Field: FDate: Format([OrderDate],"mmm")
    Total: Group By
    Sort: Ascending
    Show: Yes
    

    De expressie in het vak Veld wordt elke maand weergegeven in een tekstnotatie, zoals Jan, Feb, Mar, enzovoort.

  8. Typ in de vijfde kolom van het queryontwerpraster de volgende expressie in het vak Veld en maak de volgende selecties voor de vakken Totaal, Criteria en Weergeven:

    Field: DatePart("yyyy",[OrderDate])
    Total: Where
    Criteria: 1997
    Show: No
    

    Met de expressie in het vak Veld wordt de recordset van de query gefilterd om alleen gegevens uit 1997 op te nemen.

  9. Voer de query uit. Houd er rekening mee dat in het veld RunTot de volgende records worden weergegeven met een lopende som:

    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
    

Methode 2

De tweede methode maakt gebruik van een totalenquery met een functie DSum() om een lopend totaal voor een groep te maken.

In de volgende voorbeeldquery wordt de tabel Orders gebruikt om vrachtkosten per werknemer op te sommen en om een lopende som van de vracht te berekenen. Voer de volgende stappen uit om de query te maken en uit te voeren:

  1. Open de voorbeelddatabase Northwind.mdb.

  2. Maak een nieuwe selectiequery en voeg de tabel Orders toe.

  3. Klik in het menu Beeld op Totalen.

    Opmerking Klik in Access 2007 op Totalen in de groep Weergeven/verbergen op het tabblad Ontwerpen .

  4. Voeg in de eerste kolom van het queryontwerpraster het volgende veld toe aan het vak Veld en maak de volgende selecties voor de vakken Totaal en Weergeven:

    Field: EmpAlias: EmployeeID
    Total: Group By
    Show: Yes
    

    Met dit veld worden gegevens gegroepeerd op EmployeeID.

  5. Voeg in de tweede kolom van het queryontwerpraster het volgende veld toe aan het vak Veld en maak de volgende selecties voor de vakken Totaal en Weergeven:

    Field: Freight
    Total: Sum
    Show: Yes
    

    In dit veld worden de vrachtgegevens opgeteld.

  6. Typ in de derde kolom van het queryontwerpraster de volgende expressie in het vak Veld en maak de volgende selecties voor de vakken Totaal en Weergeven.

    OPMERKING In het volgende voorbeeld wordt een onderstrepingsteken (_) aan het einde van een regel gebruikt als een regelvolgteken. Verwijder het onderstrepingsteken van het einde van de regel wanneer u dit voorbeeld opnieuw maakt.

    Field: RunTot: Format(DSum("Freight","Orders","[EmployeeID]<=" _& [EmpAlias] & ""),"$0,000.00")
    Total: Expression
    Show: Yes
    

    In de expressie in het vak Veld wordt een functie DSum() gebruikt om het veld Vracht op tetellen wanneer de EmployeeID kleiner is dan of gelijk is aan de huidige EmpAlias en wordt het veld vervolgens opgemaakt in dollars.

  7. Voer de query uit. Houd er rekening mee dat in het veld RunTot de volgende records worden weergegeven met een lopende som:

    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