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:
Open de voorbeelddatabase Northwind.
Maak een nieuwe selectiequery en voeg de tabel Orders toe.
Klik in het menu Beeld op Totalen.
Opmerking Klik in Access 2007 op Totalen in de groep Weergeven/verbergen op het tabblad Ontwerpen .
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.
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.
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.
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.
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.
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:
Open de voorbeelddatabase Northwind.mdb.
Maak een nieuwe selectiequery en voeg de tabel Orders toe.
Klik in het menu Beeld op Totalen.
Opmerking Klik in Access 2007 op Totalen in de groep Weergeven/verbergen op het tabblad Ontwerpen .
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.
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.
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.
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
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor