Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

DomSumme in Aktualisierungsabfrage - Kriterien

Begonnen von sardus, Februar 24, 2023, 12:36:10

⏪ vorheriges - nächstes ⏩

sardus

Hallo zusammen,

muss nach langer Zeit wieder in Access aktiv werden.
Bin auf der Suche nach der richtigen Zusammensetzung der Dsum Funktion.
Meine Tabelle sieht wie folgt aus siehe unten:

Würde gern im Feld "EUR_IE_KUM" über eine Aktualisierungsabfrage die kumulierten Werte aus EUR_IE pro Center/Abteilung/Jahr/Monat/Kostenart haben.

Irgendwie bekomme ich das nicht hin. DomSumme("EUR_IE";"SGK_IE_Monat"; "was muss hier folgen ?")

Vielen Dank

Center   Abteilung   Jahr   Monat   Kostenart   EUR_IE   EUR_IE_KUM
PP/FP   FP   2022   1   Sonstige   8333   0
PP/FP   FP   2022   2   Sonstige   8333   0
PP/FP   FP   2022   3   Sonstige   8333   0
PP/FP   FP   2022   4   Sonstige   8333   0
PP/FP   FP   2022   5   Sonstige   8333   0
PP/FP   FP   2022   6   Sonstige   8333   0
PP/FP   FP   2022   7   Sonstige   8333   0
PP/FP   FP   2022   8   Sonstige   8333   0
PP/FP   FP   2022   9   Sonstige   8333   0
PP/FP   FP   2022   10   Sonstige   8333   0
PP/FP   FP   2022   11   Sonstige   8333   0
PP/FP   FP   2022   12   Sonstige   8333   0
PP/K   K   2022   1   Reisekosten   150000   0
PP/K   K   2022   2   Reisekosten   150000   0
PP/K   K   2022   3   Reisekosten   150000   0
PP/K   K   2022   4   Reisekosten   150000   0
PP/K   K   2022   5   Reisekosten   150000   0
PP/K   K   2022   6   Reisekosten   150000   0
PP/K   K   2022   7   Reisekosten   150000   0
PP/K   K   2022   8   Reisekosten   150000   0
PP/K   K   2022   9   Reisekosten   150000   0
PP/K   K   2022   10   Reisekosten   150000   0
PP/K   K   2022   11   Reisekosten   150000   0
PP/K   K   2022   12   Reisekosten   150000   0

MzKlMu

Hallo,
das sollte mit einer gruppierten Abfrage funktionieren. DomSumme ist hier fehl am Platz.
Und eine Aktualisierungsabfrage braucht es da auch nicht, solche Summen werden nicht gespeichert.
Gruß Klaus

sardus

HI,
das ging ja schnell :-)
Gruppierte Abfrage meinst du einfach die Summenfunktion in der Abfrage ? Weiß nicht ob ich mit kumuliert etwas falsch betitelt habe. Vielleicht nennt es sich auch laufende Summe. Ich möchte dass ich für den Monat 1 die Summe aus Monat 1 habe und für Monat 2 die Summe aus Monat 1+2 , usw.

Für den ersten Block in meiner Tabelle wäre das dann:

PP/FP   FP   2022   1   Sonstige   8333   8333
PP/FP   FP   2022   2   Sonstige   8333   16666
PP/FP   FP   2022   3   Sonstige   8333   24999
PP/FP   FP   2022   4   Sonstige   8333   33332
PP/FP   FP   2022   5   Sonstige   8333   usw.
PP/FP   FP   2022   6   Sonstige   8333   usw.
PP/FP   FP   2022   7   Sonstige   8333   
PP/FP   FP   2022   8   Sonstige   8333   
PP/FP   FP   2022   9   Sonstige   8333   
PP/FP   FP   2022   10   Sonstige   8333   
PP/FP   FP   2022   11   Sonstige   8333   
PP/FP   FP   2022   12   Sonstige   8333   

Beaker s.a.

Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

sardus

Morgen, danke für die Info.
Die Information im Netz habe ich schon gelesen.
Aber ich komme einfach mit der Formel nicht klar. Egal was ich probiere es kommt nicht das Ergebnis. Vielleicht kann mir ja einer für das genannte Tabellenbeispiel die Formel aufsetzen damit ich einmal verstehe wie ich die unterschiedlichen Kriterien zusammensetzen muss. Aktuell habe ich eine nicht funktionierende Version die so ist:
DomSumme("EUR_IE";"SGK_IE";"[Monat]"<=" & [Monat]")

Danke für die Hilfe

Josef P.

Hallo!

ZitatDomSumme("EUR_IE";"SGK_IE";"[Monat]"<=" & [Monat]")

Zum Testen/Fehlersuchen in VBA, da man das dort gut sieht:
const FilterMonat as long = 3
dim FilterString as String
FilterString = "[Monat]"<=" & FilterMonat"
debug.print FilterString ' <-- wäre das der erwartete SQL-Ausdruck?
debug.print DSum("EUR_IE","SGK_IE",FilterString )
(Filterausdruck habe inhaltlich inkl. Fehler übernommen)

Gruß
Josef

sardus

Danke Josef

bin leider noch kein VBA Nutzer. Kann mir aktuell nur über Abfragen und Formeln weiterhelfen.

@Beaker s.a.

Vielleicht gibt es ja einen Vorschlag meine Formel zu korrigieren.

Danke

Josef P.

#7
Schau dir das einmal genau an:
"[Monat]"  <=  " & [Monat]"Daraus entsteht dann:
DomSumme("EUR_IE";"SGK_IE";False)

Beaker s.a.

Hallo Sardus,
Na dann helf' ich dir mal auf die Sprünge.
Da dein Filter keine Bedingung "von aussen" (z.B. ein Formularfeld) benötigt
(es wird nur ein Tabellenfeld mit sich selbst verglichen), muss du den Filter-
string auch nicht zusammensetzen
DomSumme("EUR_IE";"SGK_IE";"[Monat]<=[Monat]")Wenn du jetzt vielleicht z.B. zusätzlich nach der Kostenart (hat die keine ID?),
die im Form irgendwo angezeigt wird, filtern willst, sieht die Sache schon anders
aus
DomSumme("EUR_IE";"SGK_IE";"[Monat]<=[Monat] AND Kostenart = " & txtKostenart)(txtKostenart ist das Feld auf dem Form)

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)


Beaker s.a.

Uups, Knoten im Hirn  ;)
DomSumme("EUR_IE";"SGK_IE";"[Monat] <= " & [Monat])
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

sardus

Hi,
zumindest kommt jetzt ein Ergebnis. Leider macht er jetzt in jeder Zeile die Gesamtsumme aus "EUR_IE" aber ich möchte ja das er pro Kategorie und pro Jahr (Monat 1-12) jedes mal neu mit der laufenden Summe beginnt. Vielleicht  traue ich der Funktion auch zu viel zu :-)

ebs17

#12
Zitatich möchte ja das er pro Kategorie und pro Jahr (Monat 1-12) jedes mal neu mit der laufenden Summe beginnt
Jetzt bist Du schon mal drei Schritte weiter: Du hast formuliert, was genau Du willst.
Wenn jetzt noch Kategorie in Deinen Feldern vorkommen würde ...
Ich nehme ersatzweise Kostenart.

Eine Abfrage (statt Feldausdruckgestammel) könnte dann etwa so aussehen:
SELECT
   T.*,
   DSum("EUR_IE", "SGK_IE", "Monat <= " &  T.Monat & " AND Jahr = " & T.Jahr & " AND Kostenart = " & T.Kostenart) AS EUR_IE_KUM
FROM
   SGK_IE AS T
Mit freundlichem Glück Auf!

Eberhard

sardus

Hi,

es funktioniert  ;D  ;D
Und es ergibt sich gleich die nächste Frage. Wenn in diesem Beispiel

SELECT
   T.*,
   DSum("EUR_IE", "SGK_IE", "Monat <= " &  T.Monat & " AND Jahr = " & T.Jahr & " AND Kostenart = " & T.Kostenart) AS EUR_IE_KUM
FROM
   SGK_IE AS T

"Kostenart" ein "Text" ist- und keine Zahl was muss ich ergänzen ? Denn mit meinem Zahlen geht es.

Danke

Beaker s.a.

ZitatDenn mit meinem Zahlen geht es.
Dann bleib dabei,  siehe #8
Zitatder Kostenart (hat die keine ID?),
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)