Hallo Zusammen
Bisher konnte ich zu all meinen Herausforderungen Lösungen vor allem in diesem Forum ergoogeln. Aber jetzt bin ich mit mein Latein am Ende und ich hoffe ihr könnt mich erleuchten...
Ich habe in meiner Datenbank eine Abfrage (qryAnzahlUbernommeneFz), die mir Die Anzahl von übernommenen Fahrzeugen (AnzahlvonFzStaTechnischerPlatz)) und das ÜbernahmeDatum (FzStaUbernahmeDatum) anzeigt.
Auf dieser Abfrage möchte ich nun eine Abfrage aufsetzen, die mir dann die übernommenen Fahrzeuge pro Monat kumuliert. Also bin ich gemäss Microsoftbeispiel wie folgt vorgegangen:
1. Feld 1 folgendes ausgefüllt: AYear: DatTeil("jjjj";[FzStaUbernahmeDatum])
2. Feld 2 folgendes ausgefüllt: AMonth: DatTeil("m";[FzStaUbernahmeDatum])
3. Im Feld 3 folgendes eingegeben und da endet die Reise, da der Ausdruck irgendwie syntaktisch falsch ist.
AnzahlFz: DomSumme("AnzahlvonFzStaTechnischerPlatz";"[qryAnzahlUbernommeneFz]"; "DatTeil("m";[FzStaUbernahmeDatum])<=" & [AMonth] & " And DatTeil("jjjj";[FzStaUbernahmeDatum]<=" & [AYear] & "")
Wo liegt der Fehler? Ich hoffe ihr könnt mir helfen...
Vielen Dank für eure Unterstützung
Gruss
Markus
Hallo,
besser wäre es für die Where Klausel ein Datum (von- / bis) zu verwenden, das Datum schließt ja Jahr und Monat ein.
Dann hast Du nur eine Bedingung für Where ...
Dein Problem kannst Du dann mit einer gruppierten Abfrage (von qryAnzahlUbernommeneFz) lösen, Monat und Jahr gruppieren und für das Feld "AnzahlvonFzStaTechnischerPlatz" dann Summe einstellen.
Was verstehst Du unter "über ein Jahr hinweg" ?
Vom 1.1. bis 31.12. oder andere Zeiträume?
Hi MzKlMu
Mit über ein Jahr hinweg mein ich konkret, dass das erste Fahrzeug im Mai 2020 und das letzte Fahrzeug irgendwann im Jahr 2022 geliefert wird.
Zitat von: MzKlMu am Februar 28, 2021, 17:25:34Dein Problem kannst Du dann mit einer gruppierten Abfrage (von qryAnzahlUbernommeneFz) lösen, Monat und Jahr gruppieren und für das Feld "AnzahlvonFzStaTechnischerPlatz" dann Summe einstellen.
Das habe ich probiert, dann bekomme ich nur die Summe der Fahrzeuge, die in dem jeweiligen Monat übernommen wurden. Aber ich kriege es nicht hin, das in dem aktuellen Monat die übernommenen Fahrzeuge vom Vormonat mit hinzuaddiert werden.
Hallo,
eine Summierung in einer gruppierten Abfrage schließt alle Monate und Jahre des Zeitraums ein.
AMonth uns AYear sind das Formularfelder ?
Zeige mal die Abfrage (SQL)die Du probiert hast.
ZitatWo liegt der Fehler?
Soweit ich das verstehe, muss man Jahr und Monat gemeinsam betrachten und nicht jeweils einzeln.
Also einen Ausdruck verwenden wie ...
Year(Datumsfeld) * 100 + Month(Datumsfeld)Das ergibt eine Zahl in der Form 202102. Da ist dann auch der folgende Monat im Wert höher als der aktuelle Monat, und man kann schön kumulieren, auch über Jahresgrenzen hinaus.
Hallo Klaus
Zitat von: MzKlMu am Februar 28, 2021, 19:34:23eine Summierung in einer gruppierten Abfrage schließt alle Monate und Jahre des Zeitraums ein.
AMonth uns AYear sind das Formularfelder ?
AMonth und AYear sind bzw. waren Felder in der Frage, damit habe ich das Jahr und den Monat aus dem Feld [FzStaUbernahmeDatum] der Abfrage [qryAnzahlUbernommeneFz] extrahiert.
Nun habe ich in der Abfrage [qryAnzahlUbernommeneFz] ein Feld [MonatJahr] eingefügt, das mir aus dem Feld [FzStaUbernahmeDatum] nun das Jahr und den Monat anzeigt, also im Sinne von 202005.
Der SQL Code der neuen Abfrage sieht nun so aus:
SELECT qryAnzahlUbernommeneFz.MonatJahr, DSum("[AnzahlvonFzStaTechnischerPlatz]","qryAnzahlUbernommeneFz") AS AnzahlFz
FROM qryAnzahlUbernommeneFz
GROUP BY qryAnzahlUbernommeneFz.MonatJahr
ORDER BY qryAnzahlUbernommeneFz.MonatJahr, DSum("[AnzahlvonFzStaTechnischerPlatz]","qryAnzahlUbernommeneFz");
Das Ergebnis ist wie folgt:
MonatJahr AnzahlFz
202005 20
202006 20
202007 20
usw...
Die Gesamtzahl Anfang 2021 beträgt 20 Fahrzeuge, aber 202005 müsste 6 Fz stehen.
Hallo Eberhard
Zitat von: ebs17 am Februar 28, 2021, 20:16:00Also einen Ausdruck verwenden wie ...
Code [Auswählen] Erweitern
Year(Datumsfeld) * 100 + Month(Datumsfeld)Das ergibt eine Zahl in der Form 202102. Da ist dann auch der folgende Monat im Wert höher als der aktuelle Monat, und man kann schön kumulieren, auch über Jahresgrenzen hinaus.
Müsste der Ausdruck dann so aussehen?
AnzahlFz: DomSumme("[AnzahlvonFzStaTechnischerPlatz]";"[qryAnzahlUbernommeneFz]"; (Year(FzStaUbernahmeDatum) * 100 + Month(FzStaUbernahmeDatum))
Da bekomme ich die Meldung "Der angegebene Ausdruck ... ist nicht als Bestandteil einer Aggregatfunktion enthalten
Hallo,
so:
SELECT Year([FzStaUbernahmeDatum])*100+Month([FzStaUbernahmeDatum]) AS JahrMonat,
Sum(AnzahlvonFzStaTechnischerPlatz) AS SummevonAnzahlvonFzStaTechnischerPlatz
FROM qryAnzahlUbernommeneFz
GROUP BY Year([FzStaUbernahmeDatum])*100+Month([FzStaUbernahmeDatum])
ORDER BY Sum(AnzahlvonFzStaTechnischerPlatz)Du kannst auch die Monate im Klartext anzeigen lassen.
SELECT Sum(AnzahlvonFzStaTechnischerPlatz) AS SummevonAnzahlvonFzStaTechnischerPlatz,
MonthName(Month([FzStaUbernahmeDatum])) & " " & Year([FzStaUbernahmeDatum]) AS JahrMonatText
FROM qryAnzahlUbernommeneFz
GROUP BY Year([FzStaUbernahmeDatum])*100+Month([FzStaUbernahmeDatum]), MonthName(Month([FzStaUbernahmeDatum])) & " " & Year([FzStaUbernahmeDatum])
ORDER BY Sum(AnzahlvonFzStaTechnischerPlatz)Die Gruppierung über JahrMonat muss aber wegen der Sortierung auch erhalten bleiben. Wird nur nicht angezeigt.
Direkt aus der Abfrage "qryAnzahlUbernommeneFz".
Zitat von: undefinedNun habe ich in der Abfrage [qryAnzahlUbernommeneFz] ein Feld [MonatJahr] eingefügt,
Das braucht es nicht.
ZitatIch habe in meiner Datenbank eine Abfrage (qryAnzahlUbernommeneFz), die mir Die Anzahl von übernommenen Fahrzeugen (AnzahlvonFzStaTechnischerPlatz)) und das ÜbernahmeDatum (FzStaUbernahmeDatum) anzeigt.
... die übernommenen Fahrzeuge pro Monat kumuliert
Etwa so:
SELECT
Year(Q.FzStaUbernahmeDatum) * 100 + Month(Q.FzStaUbernahmeDatum) AS JahrMonat,
DSum("AnzahlvonFzStaTechnischerPlatz", "qryAnzahlUbernommeneFz", "Year(FzStaUbernahmeDatum) * 100 + Month(FzStaUbernahmeDatum) <= " & Year(Q.FzStaUbernahmeDatum) * 100 + Month(Q.FzStaUbernahmeDatum)) AS KumAnzahl
FROM
qryAnzahlUbernommeneFz AS QDie Abfrage ist systematisch wegen der korrelierenden Unterabfrage aufwändig und performancegefährdet. Da würde man sich vorher sicher anschauen, wie optimal die Basisabfrage ist.
Guten Morgen Klaus
Deine beiden Lösungen funktionieren und Fahrzeuge werden kumuliert. Allerdings hätte ich sagen müssen, dass das Datum aufsteigend sortiert werden muss. Wenn ich die Sortierung ändere, stimmt die aufsteigende Summe der Fahrzeuge nicht mehr. Aber ich habe auch noch nicht intensiv versucht, die Sortierung erfolgreich zu ändern.
Guten Morgen Eberhard
Tip Top, Dein Code liefert genau das Ergebnis, welches ich seit 1.5 Wochen hinterherjage ...
Vielen Dank für eure intergalaktische Unterstützung. Ich sehe es nicht als selbstverständlich an, so zeitnah und das auch noch an einem Sonntag eine Antwort zu bekommen. Auf die Lösung wäre ich selber nie gekommen und werde mir beide nochmal genauer anschauen um daraus zu lernen!
Viele Grüsse und ein guten Start in die Woche wünscht ein nun sehr glücklicher
Markus