Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: jantro am Dezember 30, 2016, 16:04:15

Titel: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Dezember 30, 2016, 16:04:15
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  :(
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: MaggieMay am Dezember 30, 2016, 23:42:55
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.
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 01, 2017, 22:22:06
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.
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: MaggieMay am Januar 02, 2017, 01:01:21
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.
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 04, 2017, 18:05:56
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.
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: MaggieMay am Januar 05, 2017, 04:01:38
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
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 12, 2017, 17:13:31
Vielen Dank! das funktioniert  :)
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 16, 2017, 18:11:14
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
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: MaggieMay am Januar 17, 2017, 22:25:25
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?
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 19, 2017, 10:42:41
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.
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: Lachtaube am Januar 19, 2017, 10:55:46
Das ist schon ein alter Klassiker: Datum an SQL-String übergeben (http://www.donkarl.com/FAQ/FAQ6VBA.htm#6.8)
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 19, 2017, 13:34:18
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?
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: MzKlMu am Januar 19, 2017, 13:44:40
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

Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 19, 2017, 15:04:46
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.
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: Lachtaube am Januar 19, 2017, 15:17:29
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.
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 19, 2017, 17:48:31
siehe eins weiter

Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 24, 2017, 14:27:45
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.
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: Lachtaube am Januar 24, 2017, 14:52:02
Der Str-Funktion fehlt eine schließende Klammer ).
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: jantro am Januar 24, 2017, 15:11:40
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 ?
Titel: Re: DomWert - Werte von zugehörigen Datum subtrahieren.
Beitrag von: MzKlMu am Januar 24, 2017, 15:14:32
Hallo,
wenn Zahl müssen die Hochkomma weg.
... ID_Tag = " & [tbl_Tage].[ID_Tag] & " AND ....