Hallo zusammen,
ich habe ein Feld in dem ich zum jeweiligen Datum und zugehöriger SummeGesamt den Wert "Erledigt" durch das subtrahieren der jeweiligen Summen brauche.
Im Anhang ein Screenshot, zum Verständnis.
SummeGesamt 05.12.2016 - 06.12.2016 SummeGesamt = Erledigt
Bestand Tagesende ist noch falsch, muss vom nächsten Tag der BestandTagesanfang sein. Um das zu rechnen braucht man auch Erledigt im richtigen Feld.
Die Formel funktioniert soweit, allerdings steht der Wert im falschen Feld.
Erledigt: DomWert("SummeAnzahlGesamt";"qry_erledigt_zwischentbl";"OrgID = " & [OrgID] & " AND ID_Tag = " & Nz(DomMax("ID_Tag";"qry_erledigt_zwischentbl";"OrgID = " & [OrgID] & " AND ID_Tag < " & [ID_Tag]);0))-[BestandTagesanfang]
habe auch eine Bsp. DB angehängt.
Ich komme da selbst leider nicht weiter :(
Hallo,
du müsstest das schon etwas ausführlicher beschreiben, was genau auf Basis welcher Daten berechnet werden soll. Die "tbl_Tage" ist ja vermutlich in Wirklichkeit keine Tabelle sondern eher eine Abfrage, möglicherweiser liegt der Fehler ja bereits hier.
Oder aber auch hier:
ZitatDie Formel funktioniert soweit, allerdings steht der Wert im falschen Feld.
Also funktioniert die Formel nicht!
Ich vermute, an dieser Stelle:
-[BestandTagesanfang]
müsste der Anfangsbestand des nachfolgendes Tages herangezogen werden.
tbl_Tage ist eine Tabelle.
qry_erledigt_zwischentbl ist eine Abfrage die einfach tbl_Tage und tbl_OrgEinheit zusammenfügt.
Anhand des Datum der OrgEinheit und der dazugehörgen SummeAnzahlGesamt soll für den Tag der Wert "Erledigt" berechnet werden. Eventuelle könnte man auch ID_Tag nehmen wo die Werte zugeordnet sind.
Ich habe BestandTagesanfang, Eingang (am Tag), SummeAnzahlGesamt von Support Tickets und möchte wissen wieviele am jeweiligen Tag erledgit wurden.
Dafür müsste SummeAnzahlGesamt vom letzten Tag mit den jetzigen Tag subtrahiert werden, die Differenz ist dann "Erledgit" vom Vortag.
Erledigt Test: DomWert("SummeAnzahlGesamt";"qry_erledigt_zwischentbl";"ID_Tag = " & [ID_Tag]) & " " & [Datum]
Diese Formel gibt mir schonmal die SummeAnzhalGesamt und das Datum wieder.
Es tut mir leid, aber angesichts der Datenfelder (bzw. Datenfeldnamen) "BestandTagesanfang, Eingang (am Tag), SummeAnzahlGesamt" muss man sich doch fragen, wo diese herkommen und warum dabei nicht auch gleich die Anzahl der erledigten Fälle ermittelt werden kann.
Woher also bekommt der neue bzw. nächste Datensatz den Wert für das Datenfeld "BestandTagesanfang", das wäre hier meine Frage.
Und Summen speichert man normalerweise nicht in Tabellen, da diese bei Bedarf aus den aktuellen Daten zu berechnen sein sollten.
Die Daten werden täglich aus einer Exl Tabelle importiert und dann in die tbl_Tage angefügt. Anzahl der erledigten Fälle kann dabei nicht ermittelt werden.
Bestand Tagesanfang ist immer SummeAnzahlGesamt - Eingang. SummeAnzahlGesamt und Eingag sind in der .exl Tabelle verfügbar.
Hallo jantro,
wenn die Excel-Tabelle bereits Tagessummen liefert, so verstehe ich nicht, warum in der Abfrage nochmals gruppiert und summiert werden muss.
Daher hätte ich nun folgenden Vorschlag für dich:
SELECT tbl_Tage.ID_Tag, tbl_Tage.Datum, tbl_Tage.OrgEinheit, tbl_Tage.BestandTagesanfang, tbl_Tage.Eingang, tbl_Tage.SummeAnzahlGesamt,
tbl_Tage.SummeAnzahlGesamt - DLookUp("BestandTagesanfang","tbl_Tage","OrgEinheit = '" & [OrgEinheit] & "' AND ID_Tag = " & Nz(DMin("ID_Tag","tbl_Tage","OrgEinheit = '" & [OrgEinheit] & "' AND ID_Tag > " & [ID_Tag]),0)) AS Erledigt,
tbl_Tage.SummeAnzahlGesamt-Nz([Erledigt],0) AS BestandTagesende
FROM tbl_Tage
Vielen Dank! das funktioniert :)
Hallo, wie müsste man die Formel umstellen damit diese in einer Abfrage mit Summen und Groups funktioniert?
Als Ausdruck geht nicht. Bei Summe, Group, Erster Wert etc. kommen falsche Werte raus.
SELECT tbl_Tage.OrgEinheit, tbl_Tage.Datum, [tbl_Tage].[SummeAnzahlGesamt]-DLookUp("BestandTagesanfang","tbl_Tage","OrgEinheit = '" & [OrgEinheit] & "' AND ID_Tag = " & Nz(DMin("ID_Tag","tbl_Tage","OrgEinheit = '" & [OrgEinheit] & "' AND ID_Tag > " & [ID_Tag]),0)) AS Erledigt, Sum(tbl_Tage.SummeAnzahlGesamt) AS SummevonSummeAnzahlGesamt, Sum(tbl_Tage.BestandTagesanfang) AS SummevonBestandTagesanfang, [SummevonSummeAnzahlGesamt]-Nz([Erledigt],0) AS BestandTagesende, Count(tbl_Tage.ID_Tag) AS AnzahlvonID_Tag
FROM tbl_OrgEinheit INNER JOIN tbl_Tage ON tbl_OrgEinheit.OrgEinheitFK = tbl_Tage.OrgEinheit
GROUP BY tbl_Tage.OrgEinheit, tbl_Tage.Datum
ORDER BY tbl_Tage.OrgEinheit, tbl_Tage.Datum;
VG
Hi,
mit dem folgenden Ausdruck könnte es evtl. klappen:
SummevonSummeAnzahlGesamt - DSum("BestandTagesanfang","tbl_Tage","OrgEinheit = '" & tbl_Tage.OrgEinheit & "' AND [Datum] = " & Nz(DMin("Datum","tbl_Tage","OrgEinheit = '" & tbl_Tage.OrgEinheit & "' AND [Datum] > " & tbl_Tage.Datum),0)) AS Erledigt,
BTW:
Wozu brauchst du die Tabelle "tbl_OrgEinheit" in der Abfrage?
erstmal danke für deine Antwort!
kommt #Fehler
Syntaxfehler in Zahl in Abfrageausdruck ´OrgEinheit=´Test1´ AND [Datum] > 02.01.201´.
tbl_OrgEinheit brauche ich in Zukunft dafür, das die Namen der OrgEinheiten sich bald ändern aber trotzdem die alten Bezeichnungen noch abrufbar sein sollen.
Das ist schon ein alter Klassiker: Datum an SQL-String übergeben (http://www.donkarl.com/FAQ/FAQ6VBA.htm#6.8)
iwas mache ich falsch, wenn ich:
USDat: CLng([Datum])
USDat1: Str(CDbl([Datum]))
versuche, kommt beim 01.02.2017 z.B: 42737
wenn ich bei Format in tbl_Tage das Datum ändere nach: "\#yyyy\-mm\-dd\#" macht der daraus "yyyy-"mm"-dd"
kann mir bitte jemand sagen wo und wie genau ich das Datum ändern muss?
Hallo,
Zitatkommt beim 01.02.2017 z.B: 42737
das sit richtig und kann verwendet werden. Das Datum ist im Hintergrund eine Zahl das Typs Double, vor dem Komma die Anzahl der Tage die seit dem 30.12.1899 vergangen sind. Nach dem Komma der dezimale Anteil eines Tages.
Aus dem Direktbereich;
?cdate(1)
31.12.1899
?cdate(42737)
02.01.2017
so geht's:
Erledigt: [SummevonSummeAnzahlGesamt]-DomSumme("BestandTagesanfang";"tbl_Tage";"OrgEinheit = '" & [tbl_Tage].[OrgEinheit] & "' AND CLng(Datum) = " & Nz(DomMin("CLng(Datum)";"tbl_Tage";"OrgEinheit ='" & [tbl_Tage].[OrgEinheit] & "' AND CLng(Datum) > " & ZLong([Datum]));0))
Vielen Dank an alle für die Hilfe!
jetzt wird es noch lustiger ;) Wie kriege ich davon den Mittelwert ?
Wenn ich auf Mittelwert stelle kommt immer:
Unterabfragen können im Ausdruck....nicht verwendet werden.
DomMittelwert würde einen Mittelwert berechnen.
FWIW: Da die Dom-Funktionen nicht unbedingt zu den Schnellläufern in Access gehören, muss man sich seine Berechnungen gut überlegen, denn bei größeren Datenbeständen, fehlenden Indizierungen, Backend im LAN können durchaus auch unerwünschte Wartezeiten auftreten.
siehe eins weiter
Hallo nochmal,
versuche gerade die Formel auf ID_Tag umzustellen da der Wert eindeutiger als OrgEinheit ist.
Hier kommt folgender Fehler:
Fehlendes Element, ) oder ] in Abfrageausdruck ´ID_Tag = ´177722´ AND Str(CDBl(Datum) > ....
Erledigt: [SummevonSummeAnzahlGesamt]-DomSumme("BestandTagesanfang";"tbl_Tage";"ID_Tag = '" & [tbl_Tage].[ID_Tag] & "' AND Str(CDbl(Datum) = " & Nz(DomMin("CLng(Datum)";"tbl_Tage";"ID_Tag ='" & [tbl_Tage].[ID_Tag] & "' AND Str(CDbl(Datum) > " & Str(ZDouble([Datum])));0))
wenn ich das mit CLng(Datum) mache, kommt Dateitypkonflikt.
Der Str-Funktion fehlt eine schließende Klammer ).
ok, danke! jetzt sieht das so aus:
Erledigt: [SummevonSummeAnzahlGesamt]-DomSumme("BestandTagesanfang";"tbl_Tage";"ID_Tag = '" & [tbl_Tage].[ID_Tag] & "' AND Str(CDbl(Datum)) = " & Nz(DomMin("CLng(Datum)";"tbl_Tage";"ID_Tag ='" & [tbl_Tage].[ID_Tag] & "' AND Str(CDbl(Datum)) > " & Str(ZDouble([Datum])));0))
jetzt zeigt der mir wieder Fehler! Dateitypkonflikt.
Der konnte vorher doch auch die OrgEinheit (Kurzer Text) mit Datum
Warum kann er nicht ID_Tag (LongInteger) nehmen ?
Hallo,
wenn Zahl müssen die Hochkomma weg.
... ID_Tag = " & [tbl_Tage].[ID_Tag] & " AND ....