Erstellen einer Abfrage mit laufenden Summen in Microsoft Access


Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
290136 How to create a running totals query in Microsoft Access
Fortgeschritten: Erfordert Fachkenntnisse in den Bereichen Codierung und Interoperabilität sowie Mehrbenutzerfähigkeiten.

Dieser Artikel bezieht sich auf Microsoft Access-Datenbankdateien (MDB) sowie auf Microsoft Access-Datenbankdateien (ACCDB).In Artikel 208714 wird dieses Thema für Microsoft Access 2000 behandelt.
In Artikel 138911 wird dieses Thema für Microsoft Access 97 behandelt.

Zusammenfassung


Dieser Artikel beschreibt zwei unterschiedliche Methoden zur Erstellung einer Abfrage mit laufenden Summen. Eine Abfrage mit laufenden Summen ist eine Abfrage, in der bei jedem Datensatz die Gesamtsumme dieses Datensatzes und jedes vorherigen Datensatzes addiert wird. Dieser Typus Abfragen ist besonders vorteilhaft, um in Diagrammen oder Berichten Summen über Datensatzgruppen (oder über Zeiträume) hinweg zu kumulieren.




Hinweis: In der Beispieldatei "Qrysmp00.exe" ist eine Demonstration der in diesem Artikel verwendeten Technik zu finden. Informationen dazu, wie Sie diese Beispieldatei beziehen können, finden Sie im folgenden Artikel der Microsoft Knowledge Base:

207626 Das "Access 2000 sample : query topics" Datenbank verfügbar in Download Center

Weitere Informationen


Methode 1

Bei der ersten Methode werden die Funktion DSum sowie Kriterien in einer Abfrage verwendet, um eine laufende Summe über einen Zeitraum zu erstellen. Die Funktion DSum addiert den aktuellen Datensatz und alle vorherigen Datensätze. Wenn die Abfrage zum nächsten Datensatz gelangt, wird die Funktion DSum erneut ausgeführt und aktualisiert die Gesamtsumme.


Die folgende Beispielabfrage verwendet die Tabelle Bestellungen aus der Beispieldatenbank Nordwind.mdb, um eine laufende Summe über die Frachtkosten für jeden Monat des Jahres 1997 zu erstellen. Aus Leistungsgründen sind die Beispieldaten auf ein Jahr begrenzt. Da die Funktion DSum bei jedem Datensatz in der Abfrage ausgeführt wird, kann es (in Abhängigkeit von der Geschwindigkeit Ihres Computers) einige Sekunden dauern, bis die Abfrage abgeschlossen ist. Gehen Sie folgendermaßen vor, um diese Abfrage zu erstellen und auszuführen:

  1. Öffnen Sie die Beispieldatenbank Nordwind.
  2. Erstellen Sie eine neue Auswahlabfrage, und fügen Sie die Tabelle "Bestellungen" 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 die erste Spalte des Abfrageentwurfsbereichs folgenden Ausdruck in das Textfeld Feld ein, und treffen Sie die folgende Auswahl für die Felder Summe, Sortierung und Anzeigen.

    Feld: AYear: DateTeil("yyyy",[BestellDatum])
    Summe: Gruppierung
    Sortierung: Aufsteigend
    Anzeigen: Ja
    Der Ausdruck im Dialogfeld Feld zeigt den Bereich Jahr des Felds "BestellDatum" sortiert an.
  5. Geben Sie in die zweite Spalte des Abfrageentwurfsbereichs folgenden Ausdruck in das Textfeld Feld ein, und treffen Sie die folgende Auswahl für die Felder Summe, Sortierung und Anzeigen.


    Feld: AMonth: DateTeil("m",[BestellDatum])
    Summe: Gruppierung
    Sortierung: Aufsteigend
    Anzeigen: Ja
    Der Ausdruck im Dialogfeld Feld zeigt den Bereich "Monat" des Felds "BestellDatum" sortiert als Integerwert zwischen 1 bis 12 an.
  6. Geben Sie in die dritte Spalte des Abfrageentwurfsbereichs folgenden Ausdruck in das Textfeld Feld ein, und treffen Sie die folgende Auswahl für die Felder Summe und Anzeigen.

    Hinweis: Im folgenden Beispiel wird der Unterstrich (_) am Ende einer Zeile dazu benutzt, um anzuzeigen, dass die nächste Zeile eine Fortsetzung der vorherigen Zeile darstellt. Entfernen Sie den Unterstrich am Ende der Zeile, wenn Sie dieses Beispiel für sich erstellen.


    Feld: RunTot: DSum"Frachtkosten","Bestellungen","DatePart('m', _
    [BestellDatum])<=" & [AMonth] & " And DatePart('yyyy', _
    [BestellDatum])<=" & [AYear] & "")
    Summe: Ausdruck
    Anzeigen: Ja
    Der Ausdruck im Dialogfeld Feld verwendet die Funktion DSum(), um das Feld "Fracht" zu summieren, wenn die Werte im Feld "AMonth" und "AYear" kleiner oder gleich dem aktuellen Datensatz sind, den die Abfrage gerade verarbeitet.
  7. Geben Sie in die vierte Spalte des Abfrageentwurfsbereichs folgenden Ausdruck in das Textfeld Feld ein, und treffen Sie die folgende Auswahl für die Felder Summe, Sortierung und Anzeigen.


    Feld: FDate: Format([BestellDatum],"mmm")
    Summe: Gruppierung
    Sortierung: Aufsteigend
    Anzeigen: Ja
    Der Ausdruck im Dialogfeld Feld zeigt jeden Monat in einem Textformat an, wie Jan, Feb, Mär und so weiter.
  8. Geben Sie in die fünfte Spalte des Abfrageentwurfsbereichs folgenden Ausdruck in das Textfeld Feld ein, und treffen Sie die folgende Auswahl für die Felder Summe, Kriterien und Anzeigen.


    Feld: DatePart("yyyy",[BestellDatum])
    Summe: Bedingung
    Kriterien: 1997
    Anzeigen: Nein
    Der Ausdruck im Dialogfeld Feld filtert jeden Datensatz der Abfrage, um nur Daten des Jahres 1997 einzuschließen.
  9. Führen Sie die Abfrage aus. Beachten Sie, dass das Feld "RunTot" die folgenden Datensätze mit einer laufenden Summe anzeigt:


    AYear AMonth RunTot FDate
    --------------------------------------
    1997 1 2238.98 Jan
    1997 2 3840.43 Feb
    1997 3 5729.24 Mär
    1997 4 8668.34 Apr
    1997 5 12129.74 Mai
    1997 6 13982.39 Jun
    1997 7 17729.29 Jul
    1997 8 22204.73 Aug
    1997 9 26565.26 Sep
    1997 10 32031.38 Okt
    1997 11 36192.09 Nov
    1997 12 42748.64 Dez

Methode 2

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

Bei der folgenden Beispielabfrage wird die Tabelle "Bestellungen" verwendet, um die Frachtkosten je Mitarbeiter zu addieren sowie um eine laufende Summe der Fracht zu berechnen. Gehen Sie folgendermaßen vor, um diese Abfrage zu erstellen und auszuführen:

  1. Öffnen Sie die Beispieldatenbank "Nordwind.mdb".
  2. Erstellen Sie eine neue Auswahlabfrage, und fügen Sie die Tabelle "Bestellungen" 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 die erste Spalte des Abfrageentwurfsbereichs folgenden Ausdruck in das Textfeld Feld ein, und treffen Sie die folgende Auswahl für die Felder Summe und Anzeigen:


    Feld: EmpAlias: Personal-Nr
    Summe: Gruppierung
    Anzeigen: Ja
    Dieses Feld gruppiert die Daten nach der Personal-Nr.
  5. Geben Sie in die zweite Spalte des Abfrageentwurfsbereichs folgenden Ausdruck in das Textfeld Feld ein, und treffen Sie die folgende Auswahl für die Felder Summe und Anzeigen:


    Feld: Fracht
    Summe: Summe
    Anzeigen: Ja

    Dieses Feld summiert die Frachtdaten.
  6. Geben Sie in die dritte Spalte des Abfrageentwurfsbereichs folgenden Ausdruck in das Textfeld Feld ein, und treffen Sie die folgende Auswahl für die Felder Summe, Anzeigen.

    Hinweis: Im folgenden Beispiel wird der Unterstrich (_) am Ende einer Zeile dazu benutzt, um anzuzeigen, dass die nächste Zeile eine Fortsetzung der vorherigen Zeile darstellt. Entfernen Sie den Unterstrich am Ende der Zeile, wenn Sie dieses Beispiel für sich erstellen.


    Feld: RunTot: Format(DSum("Frachtkosten","Bestellungen","[Personal-Nr]<=" _
    & [EmpAlias] & ""),"$0,000.00")
    Summe: Ausdruck
    Anzeigen: Ja
    Der Ausdruck im Dialogfeld Feld verwendet die Funktion DSum(), um das Feld "Fracht" zu addieren, wenn die Personal-Nr. kleiner oder gleich dem aktuellen EmpAlias ist, und formatiert dann das Feld im Dollar-Format.
  7. Führen Sie die Abfrage aus. Beachten Sie, dass das Feld "RunTot" die folgenden Datensätze mit einer laufenden Summe anzeigt:


    Angestellter Frachtsumme 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
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.