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).
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).
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
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