DSum und Datum als Kriterium

29/12/2009 - 20:18 von Andreas | Report spam
Hallo,

ich berechne eine laufende Summe innerhalb einer Abfrage mit der
Funktion "DomSumme" (=DSum).

DomSumme("[sngAmount]";"[tblAccountMovements]";"STR(CDBL([datDate]))
<=" & Str(ZDouble([datDate])))

sngAmount sind positve oder negative Zahlen aus der Tabelle
"tblAccountMovements".
"datDate" ist ein Datumsfeld aus derselben Tabelle.

Ich möchte, dass eine laufende Summe in chronologischer Reihenfolge,
d.h. sortiert nach "datDate" berechnet wird. Dies funktioniert
prinzipiell auch, allerdings gibt es Probleme, wenn ein Datum mehr als
1x vorkommt. Dann nàmlich wird auch schon im ersten Datensatz für das
entsprechende Datum die Summe für den gesamten Tag berechnet und
angezeigt.

Beispiel:

tblAccountMovements

datDate sngAmount
01.01.09 1000
15.02.09 -200
30.06.09 5000
30.06.09 -2000

In der Abfrage erscheint dann folgendes Bild

datDate sngAmount Running total
01.01.09 1000 1000
15.02.09 -200 800
30.06.09 5000 3800
30.06.09 -2000 3800

In der dritten Zeile der Abfarge müsste aber in Wirklichkeit der Wert
5800 erscheinen, aber für den 30.06. werden für beide Datensàtze +3000
(5000-2000) hinzu addiert.

Wie muss ich die Formel anpassen, damit das funktioniert?

Gruß
Andreas
 

Lesen sie die antworten

#1 Karl Donaubauer
29/12/2009 - 20:43 | Warnen spam
Andreas wrote:
ich berechne eine laufende Summe innerhalb einer Abfrage mit der
Funktion "DomSumme" (=DSum).

DomSumme("[sngAmount]";"[tblAccountMovements]";"STR(CDBL([datDate]))
<=" & Str(ZDouble([datDate])))



Einfacher wàre:

DomSumme("sngAmount";"tblAccountMovements";"datDate<=" & clng(datDate))

sngAmount sind positve oder negative Zahlen aus der Tabelle
"tblAccountMovements".
"datDate" ist ein Datumsfeld aus derselben Tabelle.

Ich möchte, dass eine laufende Summe in chronologischer Reihenfolge,
d.h. sortiert nach "datDate" berechnet wird. Dies funktioniert
prinzipiell auch, allerdings gibt es Probleme, wenn ein Datum mehr als
1x vorkommt. Dann nàmlich wird auch schon im ersten Datensatz für das
entsprechende Datum die Summe für den gesamten Tag berechnet und
angezeigt.

Beispiel:

tblAccountMovements

datDate sngAmount
01.01.09 1000
15.02.09 -200
30.06.09 5000
30.06.09 -2000

In der Abfrage erscheint dann folgendes Bild

datDate sngAmount Running total
01.01.09 1000 1000
15.02.09 -200 800
30.06.09 5000 3800
30.06.09 -2000 3800

In der dritten Zeile der Abfarge müsste aber in Wirklichkeit der Wert
5800 erscheinen, aber für den 30.06. werden für beide Datensàtze +3000
(5000-2000) hinzu addiert.

Wie muss ich die Formel anpassen, damit das funktioniert?



Du brauchst ein weiteres Unterscheidungskriterium, denn das
Tagesdatum ist nunmal gleich für beide Datensàtze.
Gibt es in tblAccountMovements keinen Primàrschlüssel oder
sonstiges eindeutiges Feld? So etwas bràuchtest du als
zusàtzliches Sortierfeld in der Abfrage und Kriterium im Ausdruck.

Servus
Karl
****************
Access-FAQ: http://www.donkarl.com /// http://www.donkarl.com?NEK
.NET-Entwickler-Konferenz für Accessler 27./28.2.2010

Ähnliche fragen