Laufende Summen in Tabellen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Immer wieder taucht die Frage auf, wie man in Access die Inhalte von Zahlenfelder mehrerer Datensätze aufsummiert. Unter Excel ist das einfach – dort trägt man einfach die Summe aus der Summe bis zur vorherigen Zeile plus dem Wert der aktuellen Zeile ein. ändert man Werte, ändern sich auch die Summen. In diesem Artikel schauen wir uns an, wie dies unter Access mit Abfragen gelingt.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1901_Kumulieren.accdb.

Aufsummieren an verschiedenen Stellen

Die erste Unterscheidung, die wir treffen müssen, ist die bezüglich des Ortes, an dem der kumulierte Wert erscheint. Sollen die kumulierten Werte in der Tabelle zum jeweiligen Datensatz gespeichert werden Oder soll eine Abfrage jeweils das aktuelle Ergebnis in einer eigenen Spalte liefern Vielleicht sollen die kumulierten Zahlen auch nur in einem Formular oder Bericht erscheinen

Wichtig ist hier, die Bedeutung des Speicherns kumulierter Werte zu erkennen. Wenn Sie das tun, stellen Sie quasi eine Abhängigkeit verschiedener Datensätze voneinander her, wenn Sie beispielsweise die Werte von drei Datensätze wie folgt kumulieren:

Wert       Summe
12         12
5          17
23         40

Die Daten müssen nun immer in dieser Reihenfolge angezeigt werden, außerdem dürfen keine Datensätze gelöscht werden oder die Werte in der zu kumulierenden Spalte geändert werden, da sonst das Ergebnis nicht mehr stimmt. Wenn Sie etwa den Wert der zweiten Zeile von 5 auf 4 ändern, stimmen die kumulierten Werte der zweiten und dritten Zeile nicht mehr. Gleiches gilt, wenn Sie einen der Datensätze löschen. Nur beim letzten Datensatz wirkt sich dies nicht fehlerhaft aus.

In einer Abfrage kann man durch geschickten Einsatz von Berechnungsformeln dafür sorgen, dass die kumulierten Werte dynamisch erzeugt werden und dass sich änderungen an den Daten oder auch das Hinzufügen oder Löschen von Datensätzen nicht in Form von Fehlern auswirken, sondern sich allenfalls die Spalte mit den kumulierten Werten ändert.

Beispieltabellen

Wir verwenden die Tabelle tblAusgaben als Beispiel, die neben dem Primärschlüsselfeld noch ein Feld mit dem Datum, den Zweck und den Betrag der Ausgabe enthält sowie ein Feld mit einer Kategorie, das auf eine weitere Tabelle verweist (siehe Bild 1).

Tabelle für Beispielzwecke

Bild 1: Tabelle für Beispielzwecke

Kumulieren in Tabellen

Wir schauen uns als Erstes an, wie wir die Zahlen in Tabellen aufsummieren können. Dazu haben wir der Tabelle tblAusgaben ein paar Datensätze hinzugefügt. Außerdem legen wir dort noch ein Feld namens LaufendeSumme an (siehe Bild 2).

Tabelle noch ohne laufende Summe

Bild 2: Tabelle noch ohne laufende Summe

Laufende Summe per VBA

Wer sich mit VBA und dem DAO-Objektmodell auskennt, kann die Spalte LaufendeSumme nun recht schnell füllen. Dazu verwenden wir beispielsweise die Prozedur aus Listing 1.

Public Sub FeldAufsummieren()
     Dim db As DAO.Database
     Dim rst As DAO.Recordset
     Dim curLaufendeSumme As Currency
     Set db = CurrentDb
     Set rst = db.OpenRecordset("SELECT * FROM tblAusgaben", dbOpenDynaset)
     Do While Not rst.EOF
         rst.Edit
         curLaufendeSumme = curLaufendeSumme + rst!Betrag
         rst!LaufendeSumme = curLaufendeSumme
         rst.Update
         rst.MoveNext
     Loop
End Sub

Listing 1: Aufsummieren der Werte des Feldes einer Tabelle

Hier deklarieren und füllen wir ein Recordset mit den Daten der Tabelle tblAusgaben. Dadurch, dass wir keine Sortierung angeben, werden die Datensätze nach dem Primärschlüsselwert sortiert. Danach durchlaufen wir die Datensätze in einer Do While-Schleife und versetzen dabei zunächst den aktuellen Datensatz mit der Edit-Methode in den Bearbeitungsmodus. Dann addieren wir den Wert des Feldes rst!Beitrag zu dem in der Variablen curLaufendeSumme gespeicherten Wert.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar