ACCESS. Laufende Summen in Tabellen TABELLEN ENTWERFEN LAUFENDE SUMMEN IN TABELLEN BASICS

Ähnliche Dokumente
Verknüpfte Daten kopieren

ACCESS. Access-Daten nach Excel verknüpfen INTERAKTIV ACCESS-DATEN NACH EXCEL VERKNÜPFEN BASICS

ACCESS. Berechnete Felder in Tabellen TABELLEN ENTWERFEN BERECHNETE FELDER IN TABELLEN BASICS

ACCESS. Formulare per VBA referenzieren FORMULARE MIT VBA PROGRAMMIEREN FORMULARE PER VBA REFERENZIEREN BASICS

Zweitens über eine Abfrage, welche die Tabellen tblartikel und tbllieferanten verknüpft. Auf diese Weise würde das Kombinationsfeld

öffnen den Tabellenverknüpfungs-Manager. Bild 1: Verknüpfte Tabellen in einer Datenbank Bild 2: Fehlgeschlagener Zugriff auf eine verknüpfte Tabelle

ACCESS. Aufgabenplaner LÖSUNGEN AUFGABENPLANER BASICS

Microsoft Access Abfragen: Informationen anzeigen und sortieren

Es geht also im die SQL Data Manipulation Language.

ACCESS. Kombinationsfeld um Suche erweitern FORMULARE FÜR DIE DATENEINGABE KOMBINATIONSFELD UM SUCHE ERWEITERN BASICS

Abfragen. Übungsbeispiel Abfrage erstellen

Abfragen. Übungsbeispiel Abfrage erstellen

Als Einstieg in das Thema des Buches möchte ich Ihnen gleich zeigen, wie Sie ein kleines Makro definieren, das sich mit einem Meldungsfenster

ACCESS. 1:1-Beziehungen TABELLEN ENTWERFEN 1:1-BEZIEHUNGEN BASICS

Die SQL-Schnittstelle

Access [basics] Programmieren mit Arrays. Beispieldatenbank. Arrays. Eindimensionale Arrays. VBA-Grundlagen Programmieren mit Arrays

So funktioniert die Anmeldung bei IhrHeimplatz.de

RECHNEN MIT WORD 2010

Nützliche Tastenkombinationen (Word)

Netzlaufwerk-Verbindung auf den Server se-1ug w2k.makro.privat. im Computerraum für die Daten der Chemikaliendatenbank

Das Kapitel im Überblick

Werte zu Kombinationsfeldern hinzufügen

1 Excel Schulung Andreas Todt

NAFI Online-Spezial. Kunden- / Datenverwaltung. Mehr Infos unter:

MUNIA Bedienungsanleitung

Microsoft Access Arbeiten mit Tabellen. Anja Aue

Imagic IMS Client Allgemeines

1 Einführung Was macht eine Datenbank? Entwickler und Benutzer Warum sollten Sie mit Datenbanken arbeiten?

Erste Schritte in etab

Tabellen bearbeiten. Excel Grundlagen ZID/Dagmar Serb V.02/Sept. 2015

2 ABFRAGENENTWURFSANSICHT

Durch die Anwahl des Menüpunktes (1) KIS im Menüband auf der linken Seite gelangen Sie in den Bereich des Kanzlei-Informations-Systems.

Formulare für die Dateneingabe Mehrere Formularinstanzen anzeigen

zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt

Inhaltsverzeichnis. Eingabe der Bestandszahlen

Doppelte Werte entfernen

4 Makros ausprobieren

White Paper Wählen-Buttons in Excel

OpenOffice Base 3.4 PRAXIS. bhv. Datenbank mit. Schritt für Schritt eine Datenbank mit OpenOffice Base erstellen

5 Tabellenanpassung. 5.1 Spaltenbreite und Zeilenhöhe Spaltenbreite verändern

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P

Die SQL-Schnittstelle

1. Abfragen. Erstellen neuer Abfragen

Vorwort...10 Einleitung...12 Lernen Üben Anwenden...12 Inhalt und Aufbau des Buches...13 Inhalt...13 Aufbau Access 2007 (fast) alles ist

Wichtige Standardaktionen durchführen

Übersicht der wichtigsten MySQL-Befehle

Kurzbeschreibung zum Haushaltsbuch 3.3 für LibreOffice und Apache OpenOffice. Arne Hildebrandt

Microsoft Access Abfragen. Verknüpfung von Tabellen

Wie erreiche ich was?

1. Tabellen-Beziehungen

Tabellen / Textbausteine bearbeiten

Bedienhinweis Serienbriefe in der

Winfried Seimert. Das Einsteigerseminar Microsoft Access fatüffl

1. Benennen Sie die Elemente der Access-Benutzeroberfläche: Wann müssen Sie einer Datenbank einen Namen geben?

Im Original veränderbare Word-Dateien

ACCESS GRAFIKEN MIT SVG IM UNTERNEHMEN. In diesem Heft: VEREINSVERWALTUNG: FORMULARE, TEIL 1 REFACTORING EINFACHE REIHENFOLGE SEITE 66

Was Sie bald kennen und können

Erstellung von abhängigen Kombinationsfeldern mit dazugehörigen Unterformular...1

Allgemeine Hinweise zum Erstellen einer einfachen Datenbank

Wechseln Sie in den oberen Bereich auf Start> Dokumentenverwaltung> Neues Schreiben.

Kurzanleitung: estatistik.core Webanwendung. Lieferung erstellen

1. Benennen Sie die Elemente der Access-Benutzeroberfläche: Wann müssen Sie einer Datenbank einen Namen geben?

TREEVIEW: VERKNKÜPF- TE DATEN, TEIL I

Inhalt. Vorwort Bedienungsgrundlagen Planung einer Datenbank 49

Mit Word Rechenaufgaben durchfu hren

Menü Bearbeiten. Rückgängig

Ersatz für freie Listen in SibankPLUS

DBExplorer einrichten

Folien php/mysql Kurs der Informatikdienste

Schulungshandbuch FormicaSQL

ACCESS. basics. Das Access-Magazin für alle, die von 0 auf 100 wollen. In diesem Heft: Ausgabe 12/2013

Wichtige Standardaktionen durchführen

InfoBrief Nr. 67 August 2014

Schnellübersichten. ECDL Datenbanken mit Windows 10 und Access 2016

HAUPTDOKUMENT: DATENQUELLE:

Anmelden Geben Sie Ihre Zugangsdaten ein. Die Zugangsdaten erhalten Sie vom Webmaster, wenn Sie den Autorenvertrag unterschrieben haben.

Einfach Informatik Lernumgebung

Inhaltsverzeichnis. 1 Wie und warum Access lernen? Arbeiten mit Access

globalreview Quick Start Guide - Übersetzer Version: 3.1

ZM(B) Erinnerungsschreiben

8 Makro-Praxisbeispiel

GPS Fleet Software (

7 Datenaustausch. Datenaustausch. Ziele dieses Kapitels. A Sie verschaffen sich einen Überblick über OLE. A Sie verknüpfen Objekte.

Parameter in Korrespondenzen.

Infos zum Jahreswechsel 2018/19

NAVIGATOR MODUL 1 BESCHREIBUNG. Mit dem Navigator hat man die Möglichkeit in ASV bestimmte Daten zu selektieren, zu suchen und -Daten zu filtern.

Das Einsteigerseminar ASP

Datenbank und Tabelle mit SQL erstellen

Import und Export von Veranstaltungen

Benutzerhandbuch OM+

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Xnet-Botendienst. Anleitung Botendienstversion

Inhalt: Brainex Ihre persönliche Wissensdatenbank. Brainex Update Tool. Datenbanken aktualisieren Datenbank hinzufügen/anlegen

Transkript:

Laufende Summen in Tabellen 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: 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). 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 hinzuge- 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. Bild 1: Tabelle für Beispielzwecke www.access-basics.de Seite 8

fügt. Außerdem legen wir dort noch ein Feld namens LaufendeSumme an (siehe Bild 2). 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. 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. Bild 2: Tabelle noch ohne laufende Summe 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 Im ersten Durchlauf ist dieser noch 0, sodass der Wert nach dem Ausführen der Anweisung den Wert des Feldes Betrag enthält. Bei den folgenden durchlaufen wird hier jeweils der Wert des Feldes Betrag hinzuaddiert. Außerdem landet dieser Wert im Feld LaufendeSumme des jeweiligen Datensatzes. Die Update-Methode speichert die Änderungen und die MoveNext-Methode verschiebt den Datensatzzeiger auf den nächsten Datensatz, damit dieser im folgenden Durchlauf der Do While-Schleife verarbeitet werden kann. Das Ergebnis nach dem Ausführen der Prozedur (etwa durch Betätigen der Taste F5, während sich die Einfügemarke in der Prozedur befindet) finden Sie in Bild 3. Bild 3: Tabelle mit Werten im Feld LaufendeSumme Problem: Neue Datensätze Wenn Sie nun feststellen, dass Sie vergessen haben, eine Ausgabe für ein zurückliegendes Datum, etwa am 2.1.2019, einzutragen, landet der neue Datensatz zwar ganz unten. Das ist kein Problem, aber Sie wollen die Ausgaben nach dem Datum sortiert sehen und nicht nach der Reihenfolge des Anlegens. Sortieren Sie die Daten www.access-basics.de Seite 9

also nach dem Anlegedatum, erscheint der neue Datensatz zwischen den anderen Datensätzen (siehe Bild 4). Wir müssen die Prozedur FeldAufsummieren also nochmals aufrufen. Diese liefert dann allerdings ein in dieser Sortierung falsches Ergebnis, weil die Prozedur in der Reihenfolge der Primärschlüsselwerte aufsummiert, wir aber die Summe nach dem Feld Ausgabedatum sortiert benötigen (siehe Bild 5). Bild 4: Neuer Datensatz zwischen den anderen Datensätzen Also ändern wir die Prozedur, indem wir die Zeile zum Erstellen des Recordset-Objekts wie folgt um eine ORDER BY-Klausel erweitern: Bild 5: Falsche Reihenfolge beim Aufsummieren Set rst = db.openrecordset("select * FROM tblausgaben ORDER BY Ausgabedatum", dbopendynaset) Ändern der Sortierung von Datensätzen einer Tabelle ausgelöst wird. Damit erhalten wir dann nach erneutem Aufruf der Prozedur FeldAufsummieren die korrekten Summen im Feld LaufendeSumme. LaufendeSumme per Datenmakro Ab Access 2010 gibt es die sogenannten Datenmakros. Dabei handelt es sich um einen speziellen Typ von Makros, der durch verschiedene Aktionen wie das Anlegen, Löschen oder Ändern eines Datensatzes ausgelöst werden kann. Das ist in unserem Fall interessant, weil wir ja sicherstellen sollen, dass die Daten im Feld LaufendeSumme aktuell sind auch wenn der Benutzer zwischendurch die Daten geändert hat. Wir wollen zunächst ein Makro entwickeln, dass beim Ändern des Wertes im Feld Betrag eines der Datensätze ausgelöst wird und dann dafür sorgt, dass die Werte im Feld LaufendeSumme neu berechnet werden. Dazu erstellen wir eine Kopie der Tabelle tblausgaben unter dem Namen tblausgabendatenmakro. Das Problem der Sortierung lösen wir damit allerdings nicht, denn es gibt kein Ereignis für Datenmakros, das nach dem Bild 6: Anlegen eines Datenmakros www.access-basics.de Seite 10

Danach wechseln wir bei geöffnete Datenblattansicht der so kopierten Tabelle zum Ribbon-Element Tabelle Nachfolgeereignisse Nach Aktualisierung und klicken dieses an (siehe Bild 6). Daraufhin erscheint die Entwurfsansicht für Makros. Hier geben Sie zunächst den Befehl FestlegenLokaleVar ein. Mit diesem Stellen Sie den Wert einer lokalen Variablen namens varlaufendesumme auf 0 ein. Darunter fügen Sie den Befehl Für jeden Datensatz in hinzu. Wählen Sie dafür die Tabelle tblausgabendatenmakro aus. Als ersten Befehl innerhalb dieser Schleife erhöhen wir den Wert der Variablen varlaufendesumme um den Wert des Feldes Betrag. Dann bearbeiten wir mit dem Befehl FestlegenFeld den aktuellen Datensatz mit dem Makrobefehl DatensatzBearbeiten und stellen den Wert des Feldes LaufendeSumme auf den aktuellen Wert der Variablen varlaufendesumme ein (siehe Bild 7). Bild 7: Erstellen des Datenmakros Schließen Sie nun den Makro- Editor und bestätigen Sie gegebenenfalls die Meldung zum Speichern der Änderungen. Ändern Sie nun den Wert des Feldes Betrag für einen der Datensätze, sollte das Datenmakro eigentlich die laufende Summe in das Feld LaufendeSumme für die Datensätze der Tabelle eintragen. Aber es geschieht nichts. In einem solchen Fall schauen wir immer in den Backstage-Bereich der Anwendung nach, um zu sehen, ob es Einträge im Anwendungsprotokoll gibt. Die Schaltfläche aus Bild 8 wird dann auch nur in diesem Fall angezeigt. Bild 8: Es gibt Fehler im Anwendungsprotokoll. wenn wir ein Makro anlegen, dass durch das Ereignis Nach Aktualisierung eines Datensatzes ausgelöst wird und welches dadurch eine weitere Aktualisierung anstößt, triggert dies wiederum das Ereignis Nach Aktualisierung. In der Folge werden alle Änderung, die durch das Makro durchgeführt wurden, verworfen. Klicken wir die Schaltfläche an, erscheint die Tabelle aus Bild 9. Hier können wir der Meldung entnehmen, dass sich das Makro offensichtlich immer wieder selbst aufgerufen hat. Das ist auch logisch, denn Wir müssen also noch eine Sicherung einbauen, die prüft, welches Feld geändert wurde beziehungsweise die sicherstellt, dass die Änderung nicht durch das Feld LaufendeSumme ausgelöst wurde. Dazu www.access-basics.de Seite 11

Bild 9: Die Tabelle mit dem Anwendungsprotokoll umschließen wir die bestehenden Befehle im Makro noch mit einem weiteren Befehl namens Wenn und prüfen darin mit einer speziellen Funktion namens Aktualisiert, ob das Feld Betrag zuletzt aktualisiert wurde (siehe Bild 10). Ist dies der Fall, sorgt das Datenmakro nicht für eine erneute Änderung der Daten und die Endlosschleife kann beendet werden, bevor sie überhaupt beginnt. Sobald wir nun das Makro speichern und schließen und in der Datenblattansicht des Formulars den Betrag eines Datensatzes ändern, brauchen wir nur noch den Datensatz zu speichern, um die Berechnung für das Feld LaufendeSumme aller enthaltenen Datensätze erneut auszuführen. Änderung auch beim Neuanlegen und Löschen von Datensätzen neu berechnen Damit wir diese Neuberechnung auch auslösen können, wenn der Benutzer einen neuen Datensatz hinzufügt oder einen vorhandenen Datensatz löscht, müssen wir die hier verwendeten Makrobefehle noch zwei weiteren Datenmakros hinzufügen. Allerdings hätten wir dann die gleichen Befehle in mehreren Makros, was beim Durchführen von Änderungen eine Menge Mehraufwand bedeuten würde. Also legen wir ein sogenanntes benanntes Makro an, in das wir die hier verwendeten Makrobefehle übertragen. Das gelingt ganz einfach, indem Sie das Bild 10: Erweiterung des Datenmakros aktuelle Datenmakro Nach Aktualisierung öffnen, mit Strg + A alle Elemente markieren und diese dann mit Strg + C kopieren. In diesem Fall können wir den Inhalt sogar mit Strg + X ausschneiden, da wir die Befehle im aktuellen Datenmakro ja nicht mehr benötigen. Sie haben damit übrigens ein XML-Dokument in die Zwischenablage kopiert, dass die Informationen über alle enthaltenen Befehle enthält. Nun legen Sie über den Ribbon-Befehl Tabelle Benannte Makros Benanntes Makro Benanntes Makro erstellen ein neues benanntes Makro für diese Tabelle (siehe Bild 11). www.access-basics.de Seite 12

Bild 11: Anlegen eines benannten Makros Nach dem Erscheinen des neuen, leeren Makros fügen Sie den Inhalt der Zwischenablage mit der Tastenkombination Strg + V ein. Es erscheinen nun die aus dem ursprünglichen Makro ausgeschnittenen Befehle. Nun speichern Sie das Datenmakro unter dem gewünschten Namen, beispielsweise dmclaufendesumme (siehe Bild 12). Nun müssen wir nur noch den Aufruf dieses Makros als Befehl zu den drei Datenmakros Nach Einfügung, Nach Aktualisierung und Nach Löschung hinzufügen. Dazu öffnen Sie diese jeweils und stellen den Makrobefehl AusführenDatenmakro auf den Namen unseres benannten Makros mit führendem Tabellennamen ein (siehe Bild 13). Anpassen der Reihenfolge im Datenmakro Nun werden im Ribbon alle drei Einträge im Bereich Tabelle Nachfolgeereignisse, also Bild 12: Speichern des neuen benannten Makros Bild 13: Aufruf des Datenmakros zum Aktualisieren der laufenden Summe www.access-basics.de Seite 13

Nach Einfügung, Nach Aktualisierung und Nach Löschung, durch eine Hintergrundfarbe hervorgehoben. Wenn wir nun einen neuen Datensatz hinzufügen oder löschen, werden die Daten im Feld LaufendeSumme ebenfalls aktualisiert. Wenn dieser neue Datensatz allerdings ein Datum erhält, durch das er bei aufsteigender Sortierung nach dem Datum weiter oben eingeordnet werden müsste, stimmen die laufenden Summen nicht mehr (siehe Bild 14). Wie können wir dies noch optimieren? Indem wir das Datenmakro dmclaufendesumme noch so anpassen, dass es die Datensätze vor dem Durchlaufen noch aufsteigend nach dem Datum sortiert. Um das benannte Makro zu bearbeiten, wählen wir diesmal den Ribbon-Eintrag Tabelle Benannte Makros Benanntes Makro Benanntes Makro bearbeiten dmclaufendesumme aus. Für die Makroaktion Für jeden Datensatz in finden wir allerdings keine Möglichkeit, die Sortierung in Form eines Parameters anzugeben, wie es etwa bei der Bedingung der Fall ist. Allerdings können wir statt des Namens der Tabelle auch einen SQL-Ausdruck angeben, also Bild 14: Neuer Datensatz mit direkt hinzugefügter laufenden Summe eine SELECT-Anweisung mit einer entsprechenden WHERE-Bedingung. Diese sieht wie in Bild 15 aus. Wenn Sie das Datenmakro so speichern und dann einen neuen Datensatz anlegen, dessen Datum mitten in den Datumsangaben der vorhandenen Einträge liegt, erhält das Feld LaufendeSumme genau den passenden Wert. Nun müssen Sie gegebenenfalls noch die Reihenfolge der Datensätze im Datenblatt so einstellen, dass diese auch nach dem Datum sortiert angezeigt werden. Geben wir nun unten einen weiteren neuen Datensatz ein, dessen Datum einer der vorhandenen Datumsangaben entspricht, wird die laufende Summe auf den ersten Blick korrekt berechnet, während der neue Datensatz noch ganz unten angezeigt wird, da noch Bild 15: Hinzufügen einer Sortierung zur Datensatzgruppe www.access-basics.de Seite 14

keine Neusortierung erfolgte. Sobald Sie aber nun auf F5 drücken, um die Sortierung für alle Datensätze neu zu berechnen, landet der neue Datensatz zwar an der richtigen Stelle, jedoch stimmt die laufende Summe nicht ganz (siehe Bild 16). Bild 16: Die laufende Summe entspricht noch nicht ganz der Sortierung. Offensichtlich verwendet die im Makro definierte Datensatzgruppe nicht die gleiche Sortierung wie das Datenblatt beziehungsweise sortiert nicht nach dem gleichen Kriterium, wenn das erste Sortierkriterium gleich ist. Wenn wir uns die Datensätze in der Abbildung ansehen, erkennen wir, dass alle Datensätze zunächst nach dem Datum sortiert sind und dann, falls das Datum gleich ist, nach dem Wert des Primärschlüsselfeldes AusgabeID. Gemessen an der durch das Datenmakro berechneten laufenden Summe müssen wir allerdings annehmen, dass das Makro nicht das Primärschlüsselfeld als weiteres Sortierkriterium heranzieht, wenn das erste Sortierkriterium, hier das Feld Ausgabedatum, mehrere Datensätze mit den gleichen Werten liefert. Also fügen wir dem Datenmakro noch eine kleine Anpassung zum SQL-Ausdruck zum Zusammenstellen der Datensätze hinzu. Der Ausdruck sieht nun wie folgt aus: SELECT * FROM tblausgabendatenmakro ORDER BY tblausgabendatenmakro.ausgabedatum, tblausgabendatenmakro.ausgabeid; Bild 17: Tabelle mit korrekter laufender Summe tauscht für die Datensätze mit den Primärschlüsselwerten 8 und 9 die Plätze (siehe Bild 17). Zusammenfassung und Ausblick Wenn man berechnete Werte in Abhängigkeit von anderen Datensätzen in einer Tabelle unterbringen will, besteht immer die Gefahr inkonsistenter Daten, weil man ja sowohl die zur Berechnung herangezogenen Felder also auch die Felder ändern kann, wenn man die Berechnung manuell oder per VBA durchführt. Mit den unter Access 2010 eingeführten Datenmakro kann man Inkonsistenzen jedoch weitgehend ausschließen, da die berechneten Felder bei jeder Änderung eines der Datensätze neu berechnet werden können. Man müsste nun nur noch das Kriterium der Wenn-Bedingung im Makro wie folgt erweitern: Aktualisiert("Betrag") Oder Aktualisiert("LaufendeSumme") Damit erhalten wir nun das gewünschte Ergebnis, wenn wir einen der Werte im Feld Betrag noch einmal leicht verändern. Der Wert für die laufende Summe Dann wird das Makro auch beim Versuch des Benutzers, das Feld LaufendeSumme zu ändern, ausgelöst und die laufende Summe direkt wieder korrigiert. www.access-basics.de Seite 15