Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Stundenberechnung über einen Tag hinaus....

Begonnen von Xoar, August 15, 2011, 21:57:05

⏪ vorheriges - nächstes ⏩

Xoar

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

Stapi

Hallo Xoar

Schau mal hier:

http://www.donkarl.com/2.10

Vieleicht ist da´s was du suchst

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

bahasu

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?
Servus


Jonny

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

DF6GL

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.



Xoar

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

DF6GL

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

Xoar

#8
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

bahasu

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
Servus