Hallo bin mir gerade nicht so sicher, ob ich den richtigen Weg einschlage...
Folgendes ich habe ein Formular wo ich oben einen Wochentag eintrage. z.B. 01.08.2011.
Nun habe ich in einem Unterformular mit zwei Listenfeldern ("von" und "bis"), in diesen wird ausgewählt wann man mit der Dienstzeit beginnt und endet.
Datensatzquelle dient dazu die tblDienzeiten, wo alle Dienstzeiten eingetragen sind. Gespeichert werden die Daten in tblDienstplan.
Problem ansich ist nun, dass in der Regel morgens um 07:30 Dienstbeginn ist und erst 24 Std später um 07:30 Dienstschluss. Jetzt weiß ich nicht wie ich die Dienstzeit in Std ermitteln kann. Ich habe halt kein Feld wo eingetragen wird 01.08.2011 ist um 07:30 Beginn und 02.08.2011 07:30 Schluss.
Habt ihr da ne Idee???
also bis jetzt hab ich ne Formel, aber die ist noch nicht komplett, bzw falsch:
Dienstzeit: Wenn([bis]<=24;[von]+[bis];24-[von]+[bis])
Liebe Grüße
Hallo Xoar
Schau mal hier:
http://www.donkarl.com/2.10
Vieleicht ist da´s was du suchst
Gruß Stefan
Moin,
vielleicht hilft auch: http://www.access-o-mania.de/forum/index.php?topic=13951.0
Harald
PS
Wieso ist die DonKarl-Seite nicht mehr aufrufbar?
Hallo,
weil der Link falsch ist:
http://www.donkarl.com/?FAQ2.10
Hallo,
die Berechnung wird immer von + bis rechnen da bis immer kleiner als 24 ist. Die Uhrzeit ist intern ein Teil von einem ganzen Tag.
Nimm folgende Formel:
Dienstzeit: wenn([bis] < [von];1 - [von] + [bis];[bis] - [von])
Gruß
Johann
Hallo,
wenn es sich hier um eine Arbeitszeit/Dienstzeit-Berechnung , die mehrere Tage umfassen kann, handelt, schlage ich das Behandeln der Zeitwerte als Dezimalwerte in Stunden (1:45 == 1,75 h ), evtl. auch als Ganzzahlen in Minuten (1:45 == 105 min )vor.
Die Eingabe bzw. Ausgabe der Zeitwerte kann durchaus in gewohnten hh:mm-Format (mittels kleiner Umrechnungsfunktionen) erfolgen.
Die Vorschläge sind schonmal nett, hab nur noch eine Denkblockade, oder noch ein Problem...
z.B. i.d.R. wird gearbeitet von 07:30 bis 07:30, tja wie soll nun berechnet werden, das dass 24 Std sind. Wie gesagt hab keine Eingabe, dass am 01. Dienstbeginn und am 02. Dienstende ist. Zweithäufigste Dienstzeit ist 07:30 bis 19:30, was wiederum ja ganz einfach zu berechnen ist.
Würde das ja mit ner if/wenn Formel machen, nur leider gibt es da so viele Möglichkeiten das dass wohl rausfällt.
Grüße
Hallo,
solche Randbedingungen müssen halt ALLE definiert und mit einer Plausifunktion behandelt werden....
Was ist, wenn z. B. 7:30 bis 7:35 gearbeitet wird?
ZitatWie gesagt hab keine Eingabe, dass am 01. Dienstbeginn und am 02. Dienstende ist.
Warum nicht?
.
.
If datediff("n",tVon,tBis) =0 then curStd=24
jo super so hat geklappt, allerdings nur für die eine Variante der Dienstzeiten.
Habs nun als Ausdruck direkt mit in die Abfrage eingebaut:
Dienstzeit: (Wenn(DatDiff("n";[von];[bis])=0;1440;DatDiff("n";[von];[bis])))/60 gibt mir dann auch halbe Std etc wieder.
///// edit
mir ist da gerade ne Idee gekommen, ich könnte doch auch dem Listenfeld eine Spalte hinzufügen (invisible) wo der 24std Tagcounter erst bei 07:30 beginnt und wieder in Stundenschritten bis 07:30 geht. Dann hab ich da ja max 24Std, und die könnte ich mit der DatDiffFunktion ja dann simpel berechnen.
Bsp.:
ID Spalte_zum_rechnen Spalte_zum_anzeigen (Spalte zum rechnen, wird dann in die Tabelle eingetragen, womit die Abfrage rechnet)
1 00:00 07:30
2 00:30 08:00
3 01:00 08:30
. . .
. . .
. . .
Müsste doch ansich so klappen, oder?
PS: es wird NIE mehr als 24Std gearbeitet.
///edit 2
Habs mal so eingebaut. Scheint erstmal so zu klappen. Teste das heute Abend mal ausgiebig
Zitat von: Xoar am August 17, 2011, 15:11:23
Dienstzeit: (Wenn(DatDiff("n";[von];[bis])=0;1440;DatDiff("n";[von];[bis])))/60 gibt mir dann auch halbe
alternativ:
Wenn([von] = [bis];1440;DatDiff("n";[von];[bis]))/60
Harald