Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

DSum mit mehreren Kriterien und Formaten

Begonnen von dakinewinz, April 21, 2017, 14:21:20

⏪ vorheriges - nächstes ⏩

dakinewinz

Hallo zusammen,

auf meiner Suche nach dringend nötiger Hilfe bei einer DSum Formel bin ich auf eurer Forum gestoßen :-)

Ich habe bereits 2 volle Tage an diesem Problem verbracht und möchte mich nun bei den Profis nach Hilfe umschauen.

Ich habe eine Beispiel-Excel-Datei angehangen in der ich unter Problem 1 die Ausgangsdaten dargestellt habe, welche im Tab Problem 2 gruppiert bzw. summiert sind.
Ich möchte anhand mehrerer Kriterien die [SumofSums] in einem weiteren Feld kumulieren.
Dabei soll beachtet werden, dass NUR bzw. JEWEILS die [SumofSums] kumuliert werden sollen,
bei denen [Name1] und [Name2] pro [Sales Date] "übereinstimmen", sodass dementsprechend mehrere Summen kumuliert werden.

Meine Lösung hierfür sieht bisher so aus und sollte mMn richtig sein, ist Sie aber anscheinend nicht
DSum("[SumOfSums]";
"00_Tabelle";
"[WD]<=" & [WD] & "
AND [YEAR]<=" & [YEAR] & "
AND [MONTH]<=" & [MONTH] & "
AND [NAME1]='" & [NAME1] & "'
AND [NAME2]='" & [NAME2] & "'")


Sehr seltsam finde ich, dass es funktioniert, wenn ich die Query nur mit Daten aus einem Monat in einem Jahr laufen lasse... (vorgefilterte Daten, nicht der gleiche Datensatz)

DSum("[SumOfSums]";
"00_Tabelle";
"[WD]<=" & [WD] & "
AND [NAME1]='" & [NAME1] & "
'AND [NAME2]='" & [NAME2] & "'")

...außer, dass er mir hier für den 1 WD die Sum doppelt akkumuliert.


Ich hoffe man versteht mein Problem und ihr könnt mir helfen.

Ansonsten gerne Fragen. Vielen Dank schon mal!

atropos

#1
Hallo,

also wenn Du nach Datum filtern willst, darfst Du nicht Jahr und Monat trennen. Das Datum an sich ist ja eine fortlaufende Kommazahl. Wenn Du alles haben willst was vor dem 31.05.2017 ist, dann darfst Du doch nicht sagen

Monat <= 5 und Jahr <=2017

den 01.06.2016 bekommst Du so z.B. nicht, weil die 6 nicht kleiner als die 5 ist...

sondern Du solltest das Argument richtig schreiben:

"((([WD])<=" & [WD] & ") AND (([NAME1])='" & [NAME1] & "') AND (([NAME2])='" & [NAME2] & "') AND (([Date])<=" & Format([Date]; "\#yyyy-mm-dd#\") & "))"

Wobei Du das Feld "Date" anders benennen solltest, den Befehl Date() gibt es in Access ja schon, ist reserviert...
Gruss
atropos

Lachtaube

Statt DSum würde ich eher eine Unterabnfrage verwenden, die ein Sklalar ausgibt.SELECT Year,
       Month,
       Workday,
       Date,
       Name1,
       Name2,
       SumOfSum,
       ( SELECT SUM( SumOfSum )
         FROM   PROBLEM2
         WHERE  Name1 = p.Name1 AND
                Name2 = p.Name2 AND
                Year * 10000 + Month * 100 + Workday <= p.Year * 10000 + p.Month * 100 + p.Workday ) AS SumOfAccumulated
FROM   PROBLEM2 p
ORDER  BY 5, 6, 1, 2, 3;

Die ersten Zeilen der Abfrage sehen dann so aus.

Query1 
YearMonthWorkdayDateName1Name2SumOfSumSumOfAccumulated
2014
12
2
02.12.2014
AD
66
66
2014
12
4
04.12.2014
AD
57
123
2014
12
10
12.12.2014
AD
96
219
2014
12
14
18.12.2014
AD
83
302
2014
12
20
30.12.2014
AD
151
453
2015
12
2
02.12.2015
AD
81
534
2015
12
4
04.12.2015
AD
77
611
2015
12
5
07.12.2015
AD
63
674
2015
12
6
08.12.2015
AD
96
770
2015
12
7
09.12.2015
AD
113
883
2015
12
11
15.12.2015
AD
98
981
2015
12
12
16.12.2015
AD
81
1062
2015
12
16
22.12.2015
AD
57
1119
2016
9
1
01.09.2016
AD
76
1195
2016
9
2
03.09.2016
AD
96
1291
2016
9
7
09.09.2016
AD
132
1481
2016
9
7
10.09.2016
AD
58
1481
2016
9
10
14.09.2016
AD
90
1571
2016
9
18
26.09.2016
AD
52
1623
2016
10
12
19.10.2016
AD
162
1785
2016
10
15
24.10.2016
AD
91
1876
2016
10
17
26.10.2016
AD
82
1958
2016
10
19
28.10.2016
AD
95
2053
2016
10
20
31.10.2016
AD
171
2224
2016
11
7
10.11.2016
AD
93
2317
2016
11
10
15.11.2016
AD
61
2378
2016
11
16
23.11.2016
AD
50
2428
2017
1
0
01.01.2017
AD
88
2516
2017
1
3
04.01.2017
AD
76
2592

Die Kumulierung kann natürlich auch jedes Jahr bzw. Monat/Jahr neu beginnen - aber das habe ich nicht aus der Beschreibung herauslesen können.
Grüße von der (⌒▽⌒)