Neuigkeiten:

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

Mobiles Hauptmenü

DomWert - Werte von zugehörigen Datum subtrahieren.

Begonnen von jantro, Dezember 30, 2016, 16:04:15

⏪ vorheriges - nächstes ⏩

jantro

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  :(

MaggieMay

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.
Freundliche Grüße
MaggieMay

jantro

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

jantro

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.

MaggieMay

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
Freundliche Grüße
MaggieMay

jantro


jantro

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

MaggieMay

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?
Freundliche Grüße
MaggieMay

jantro

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.

Lachtaube

Grüße von der (⌒▽⌒)

jantro

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?

MzKlMu

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

Gruß Klaus

jantro

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.

Lachtaube

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.
Grüße von der (⌒▽⌒)