Erstellen einer abfrage mit ausgeführten Gesamtsummen in Microsoft Access

Erweitert: Erfordert Expertenkenntnisse für Codierung, Interoperabilität und Mehrbenutzerfähigkeiten.

Dieser Artikel bezieht sich auf eine Microsoft Access-Datenbankdatei (.MDB) oder eine Microsoft Access-Datenbankdatei (.ACCDB).

Zusammenfassung

In diesem Artikel werden zwei Methoden veranschaulicht, mit denen Sie eine ausgeführte Gesamtsummenabfrage erstellen können. Eine ausgeführte Gesamtsummenabfrage ist eine Abfrage, bei der die Summe für jeden Datensatz eine Summe dieses Datensatzes und aller vorherigen Datensätze ist. Diese Art von Abfrage ist nützlich, um kumulative Summen für eine Gruppe von Datensätzen (oder über einen bestimmten Zeitraum) in einem Diagramm oder Bericht anzuzeigen.

Hinweis Eine Demonstration der in diesem Artikel verwendeten Technik finden Sie in der Beispieldatei Qrysmp00.exe.

Weitere Informationen

Methode 1

Die erste Methode verwendet eine DSum-Funktion und Kriterien in einer Abfrage, um im Laufe der Zeit eine ausgeführte Summe zu erstellen. Die Funktion DSum summiert den aktuellen Datensatz und alle vorherigen Datensätze. Wenn die Abfrage zum nächsten Datensatz wechselt, wird die DSum-Funktion erneut ausgeführt und aktualisiert die kumulierte Summe.

Die folgende Beispielabfrage verwendet die Tabelle Orders aus der Beispieldatenbank Northwind, um eine laufende Summe der Frachtkosten für jeden Monat im Jahr 1997 zu erstellen. Die Beispieldaten sind aus Leistungsgründen auf ein Jahr beschränkt. Da die DSum-Funktion für jeden Datensatz in der Abfrage einmal ausgeführt wird, kann es (abhängig von der Geschwindigkeit Ihres Computers) mehrere Sekunden dauern, bis die Abfrage die Verarbeitung abgeschlossen hat. Führen Sie die folgenden Schritte aus, um diese Abfrage zu erstellen und auszuführen:

  1. Öffnen Sie die Beispieldatenbank Northwind.

  2. Erstellen Sie eine neue Auswahlabfrage, und fügen Sie die Tabelle Orders hinzu.

  3. Klicken Sie im Menü Ansicht auf Summen.

    Hinweis Klicken Sie in Access 2007 auf der Registerkarte Entwurf in der Gruppe Einblenden/Ausblenden auf Summen.

  4. Geben Sie in der ersten Spalte des Abfrageentwurfsbereichs den folgenden Ausdruck in das Feld Feld ein, und treffen Sie die folgende Auswahl für die Felder Gesamt, Sortieren und Anzeigen:

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

    Der Ausdruck im Feld Feld zeigt den Jahresteil des Felds OrderDate an und sortiert diesen.

  5. Geben Sie in der zweiten Spalte des Abfrageentwurfsbereichs den folgenden Ausdruck in das Feld Feld ein, und treffen Sie die folgende Auswahl für die Felder Gesamt, Sortieren und Anzeigen:

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

    Der Ausdruck im Feld Feld sortiert und zeigt den Monatsteil des Felds Bestelldatum als ganzzahligen Wert von 1 bis 12 an.

  6. Geben Sie in der dritten Spalte des Abfrageentwurfsbereichs den folgenden Ausdruck in das Feld Feld ein, und wählen Sie die folgenden Optionen für die Felder Gesamt und Anzeigen aus.

    HINWEIS Im folgenden Beispiel wird ein Unterstrich (_) am Ende einer Zeile als Zeilenfortsetzungszeichen verwendet. Entfernen Sie den Unterstrich vom Ende der Zeile, wenn Sie dieses Beispiel neu erstellen.

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

    Der Ausdruck im Feld Feld verwendet die DSum()-Funktion, um das Feld Fracht zu summieren, wenn die Werte in den Feldern AMonth und AYear kleiner oder gleich dem aktuellen Datensatz sind, den die Abfrage verarbeitet.

  7. Geben Sie in der vierten Spalte des Abfrageentwurfsbereichs den folgenden Ausdruck in das Feld Feld ein, und treffen Sie die folgende Auswahl für die Felder Gesamt, Sortieren und Anzeigen:

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

    Der Ausdruck im Feld Feld wird jeden Monat in einem Textformat angezeigt, z. B. Jan, Feb, Mar usw.

  8. Geben Sie in der fünften Spalte des Abfrageentwurfsbereichs den folgenden Ausdruck in das Feld Feld ein, und treffen Sie die folgenden Auswahlen für die Felder Summe, Kriterien und Anzeigen:

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

    Der Ausdruck im Feld Feld filtert das Recordset der Abfrage so, dass nur Daten aus dem Jahr 1997 enthalten sind.

  9. Führen Sie die Abfrage aus. Beachten Sie, dass im Feld RunTot die folgenden Datensätze mit einer ausgeführten Summe angezeigt werden:

    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

Die zweite Methode verwendet eine Gesamtsummenabfrage mit einer DSum()-Funktion, um eine laufende Summe für eine Gruppe zu erstellen.

In der folgenden Beispielabfrage wird die Tabelle Orders verwendet, um die Frachtkosten pro Mitarbeiter zusammenzufassen und eine laufende Summe der Fracht zu berechnen. Führen Sie die folgenden Schritte aus, um die Abfrage zu erstellen und auszuführen:

  1. Öffnen Sie die Beispieldatenbank Northwind.mdb.

  2. Erstellen Sie eine neue Auswahlabfrage, und fügen Sie die Tabelle Orders hinzu.

  3. Klicken Sie im Menü Ansicht auf Summen.

    Hinweis Klicken Sie in Access 2007 auf der Registerkarte Entwurf in der Gruppe Einblenden/Ausblenden auf Summen.

  4. Fügen Sie in der ersten Spalte des Abfrageentwurfsbereichs dem Feld Feld das folgende Feld hinzu, und treffen Sie die folgende Auswahl für die Felder Gesamt und Anzeigen:

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

    Dieses Feld gruppiert Daten nach EmployeeID.

  5. Fügen Sie in der zweiten Spalte des Abfrageentwurfsbereichs dem Feld Feld das folgende Feld hinzu, und treffen Sie die folgende Auswahl für die Felder Gesamt und Anzeigen:

    Field: Freight
    Total: Sum
    Show: Yes
    

    Dieses Feld summiert die Frachtdaten.

  6. Geben Sie in der dritten Spalte des Abfrageentwurfsbereichs den folgenden Ausdruck in das Feld Feld ein, und wählen Sie die folgenden Optionen für die Felder Gesamt und Anzeigen aus.

    HINWEIS Im folgenden Beispiel wird ein Unterstrich (_) am Ende einer Zeile als Zeilenfortsetzungszeichen verwendet. Entfernen Sie den Unterstrich vom Ende der Zeile, wenn Sie dieses Beispiel neu erstellen.

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

    Der Ausdruck im Feld Feld verwendet eine DSum()-Funktion, um das Feld Fracht zu summieren, wenn die EmployeeID kleiner oder gleich dem aktuellen EmpAlias ist, und formatiert das Feld dann in Dollar.

  7. Führen Sie die Abfrage aus. Beachten Sie, dass im Feld RunTot die folgenden Datensätze mit einer ausgeführten Summe angezeigt werden:

    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