Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: sardus am Februar 24, 2023, 12:36:10

Titel: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: sardus am Februar 24, 2023, 12:36:10
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
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: MzKlMu am Februar 24, 2023, 12:43:41
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.
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: sardus am Februar 24, 2023, 13:56:47
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   
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: Beaker s.a. am Februar 24, 2023, 15:06:45
Jau, das ist eine laufende Summe, schaust du hier (https://www.donkarl.com?FAQ3.11).
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: sardus am März 03, 2023, 07:27:57
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
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: Josef P. am März 03, 2023, 08:33:57
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
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: sardus am März 03, 2023, 09:26:55
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
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: Josef P. am März 03, 2023, 09:44:33
Schau dir das einmal genau an:
"[Monat]"  <=  " & [Monat]"Daraus entsteht dann:
DomSumme("EUR_IE";"SGK_IE";False)
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: Beaker s.a. am März 03, 2023, 17:11:58
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
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: Josef P. am März 03, 2023, 17:19:48
[Monat]<=[Monat]Wird ziemlich gleich sein. ;)
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: Beaker s.a. am März 03, 2023, 18:07:34
Uups, Knoten im Hirn  ;)
DomSumme("EUR_IE";"SGK_IE";"[Monat] <= " & [Monat])
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: sardus am März 03, 2023, 20:36:05
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 :-)
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: ebs17 am März 03, 2023, 22:36:36
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
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: sardus am März 06, 2023, 09:22:18
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
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: Beaker s.a. am März 06, 2023, 12:59:42
ZitatDenn mit meinem Zahlen geht es.
Dann bleib dabei,  siehe #8
Zitatder Kostenart (hat die keine ID?),
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: ebs17 am März 06, 2023, 13:45:47
Zitat"Kostenart" ein "Text" ist- und keine Zahl was muss ich ergänzen ? Denn mit meinem Zahlen geht es.
Von außen zugeführte Vergleichswerte müssen datentypabhängig formatiert werden. Du willst sicherlich nicht beleidigt werden, indem man etwas zum Blind-Kopieren vorwirft, sondern Du willst bestimmt etwas lernen:
Grundlagen - SQL ist leicht (19) - SQL in VBA und VBA in SQL (https://www.ms-office-forum.net/forum/showpost.php?p=2060307&postcount=2)
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: sardus am März 06, 2023, 13:57:52
Hi,

so lange probiert und gelesen.

Mein Ansatz scheint zu funktionieren wenn ich diese ' setze. Zufallsprodukt oder hat das so seine Richtigkeit ?


DomSumme("EUR_IE";"SGK_IE";"Monat <= " & [SGK_IE].[Monat] & " AND Kostenart = '" & [SGK_IE].[Kostenart] & "'")

Wenn Ihr darin keine Probleme seht wäre es evtl. auch eine Lösung für andere Anfänger :-)

Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: ebs17 am März 06, 2023, 14:07:52
ZitatZufallsprodukt oder hat das so seine Richtigkeit ?
Der zweite Punkt trifft zu.
Den ersten Punkt musst Du Dir selber beantworten. Langfristig wäre geplantes Tun aus Wissen heraus besser als Zufall.
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: MzKlMu am März 06, 2023, 14:08:27
Hallo,
das mit den Hochkomma ist so richtig.
Aber es gibt auch noch ein Aber.
Für die Kostenart sollte es auch eine Tabelle geben mit einem Primärschlüssel (Zahl > Autowert).
Und im Regelfall wird dann auch über diese Zahl gefiltert.
Das würde dann so aussehen:
DomSumme("EUR_IE";"SGK_IE";"Monat <= " & [Monat] & " AND KostenartID = " & [KostenartID])
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: sardus am März 06, 2023, 15:00:37
Danke für eure Hilfe !

Das mit der ID für meine Kategorien (z.b. Kostenart) muss ich mit der Zeit einarbeiten.
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: MzKlMu am März 06, 2023, 15:15:08
Hallo,
Zitatmuss ich mit der Zeit einarbeiten.
mache es leiber gleich, es wird sonst immer aufwendiger.
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: sardus am März 29, 2023, 07:10:50
Guten Morgen zusammen,
bin mir nicht sicher ob es besser ist eine neues Thema zu eröffnen. Da ihr mir hier zu dem Thema schon geholfen habt mache ich hier mal weiter.
Die Lösung mit der laufenden Summe funktioniert. Nun gibt es eine weitere Herausforderung in den Daten. Es passiert aktuell, dass es in den Daten auch Monate gibt in denen es keine Daten gibt. Dann ist es aktuell so, dass es eine "Monatslücke" gibt. Die Summe passt per Dezember aber gerne hätte ich für jeden Monat einen Wert damit es in der späteren Visualisierung sauber ist. Bsp.: in rot der akt. fehlende Monat(Mai)hier soll dann Wert fortgeführt werden.
Hoffe das kann man verstehen. Danke

Jan 100
Feb 200
Mrz 300
Apr 400
Mai 400
Jun 500
.
.
.
Dez 1100
Titel: Re: DomSumme in Aktualisierungsabfrage - Kriterien
Beitrag von: ebs17 am März 29, 2023, 13:24:57
Dass es eine "Lücke" gibt, erkennst Du daraus, dass Du eine Vorstellung von Vollständigkeit hast.
Das überträgt man auf seine Abfrage, auch dort braucht man als eine vollständige Menge, um Fehlendes zu erkennen und auch zu ergänzen.
SELECT
   M.Monat,
   IIF(A.Anzahl IS NULL, 0, A.Anzahl) AS Anzahl,
   A,*
FROM VollstaendigeMenge AS V LEFT JOIN AktuelleMenge AS A
ON M.Monat = A.Monat
Durch den OUTER JOIN gibt es immer alle Monate, es gibt Datensätze, wo man nun NULL-Inhalte von Anzahl verarbeiten kann.