September 24, 2020, 03:18:53

Neuigkeiten:

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


Zeiterfassung im 2-Schichtmodel - VBA Code ??

Begonnen von shinoda70, August 27, 2020, 18:34:32

⏪ vorheriges - nächstes ⏩

shinoda70

Hallo Leute, ich hoffe, Ihr könnt mir wieder mal helfen  :)

Ich möchte in einem Formular, welches auf einer Abfrage und Tabelle basiert, eine Bearbeitungszeit durch die Mitarbeiter festhalten und dokumentieren.

Dazu muss man aber beachten, dass die Mitarbeiter in zwei schichten arbeite.
Früh von 06:00 - 14:00 Uhr und
Spät von 14:00 - 22:00 Uhr.

Nun möchte ich gerne, wenn beispielsweise ein Früh Mitarbeiter am 25.08. um 12:00 eine Arbeit beginnt und diese am Folgetag (26.08.) um 08:00 abschließt, genau diese 4 Stunden in der Datenbank dokumentiert werden (Pausen klammere ich aus).

Die gesamtstundensumme habe ich mit folgendem Code erfassen:

Private Sub berechnen_Click()

Dim Dblstart As Double
Dim Dblmende As Double

Let Dblstart = Me.start
Let Dblmende = Me.ende

Dbldauer = ([Dblmende] - [Dblstart] - ([Dblmende] <= [Dblstart])) * 24

Me.Aufwand = Dbldauer

End Sub

Damit bekomme ich erstmal die 20 Stunden. Aber wie kann ich die Schichten berücksichtigen, dass ich also nur auf die 4 Stunden komme?

Hat jemand einen Ansatz ??? ?

Und noch ne Frage, die sicher etwas einfacherer ist. Die 20  ist ja eine Dezimalzahl...wie wandle ich eine Dezimalzahl in eine echte Zeit um... also in 20:00 ??

Gruß, Micha

HB9876

Im generellen wuerde ich hier ueber eine Schichttabelle nachdenken.
So kann man dann ggf. auch Mehrarbeit (oder Schichtverkuerzung) zur Berechnung heranziehen.

Fuer deine andere Frage:
https://www.access-o-mania.de/forum/index.php?topic=20376.0

Mit jeder Antwort komme ich weiter und lerne.

Danke!!!

ebs17

Zitatwelches auf einer Abfrage und Tabelle basiert
Das soll jetzt alles sagen? Ich denke, irgendwo blinken wie wild Fragezeichen.

ZitatAber wie kann ich die Schichten berücksichtigen, dass ich also nur auf die 4 Stunden komme?
Über ein durchdachtes Datenmodell und einige Hilfstabellen.

Wenn für jeden Mitarbeiter sein "Arbeitsplan" hinterlegt ist (Arbeitstage abzüglich Feiertage, Urlaub, Kur, krank) in Verbindung mit dem dann gültigen Schichtplan und einer Schicht-Arbeitszeitentabelle, kann man die entsprechenden Stunden (oder Viertelstunden) zwischen Beginnzeitpunkt und Endezeitpunkt einfach ermitteln.
Mit freundlichem Glück Auf!

Eberhard

shinoda70

Okay...ist kacke erklärt.
Ich versuch´s mal so....

Im Prinzip ist das kein Schichtplan, sondern ein Formular welches bestimmte Arbeiten/Tätigkeiten dokumentieren soll.
Zum Start der Arbeit/Tätigkeit wird das aktuelle Datum und die Zeit durch klick auf ein Button eingegeben, zum Ende ebenfalls Datum und Zeit, im dritten TExtfeld wollte ich die Gesamtzeit zusammenrechnen lassen.

Einfach gesagt, geht es um zwei Datum/Zeit TextFelder die voneinander subtrahiert werden sollen und um ein Textfeld wo am Ende eine Bearbeitungszeit berechnet werden soll.

Habe nur das Problem, dass diese Arbeiten manchmal über zwei Tage gehen, weil der MA kurz vor Ferieabend noch was anfängt und am nächsten Tag dann weiter macht.... und dann klappt das zusammenrechnen nicht  :(

HB9876

Hi,
ich wuerde nicht sagen "kacke" erklaert...
Die beiden Antworten zielen schon auf das gleiche hinaus.

Wenn du es so haben moechtest wie beschrieben:
1. Eine Anwendung mit start stop erstellen (wo start einen Timestamp setzt und stop natuerlich auch, als DS), dieses zu einer Id bezogen. Darueber kannst du dann die Zeiten berechnen, der MA muss nur halt was machen.
2. Wenn die Arbeitszeitunterbrechung wirklich immer gleich ist, in deinem BSP. 16 Stunden, ziehe diese ab bei Ueberschreitung der Tagesendarbeitszeit.

Ehrlich gesagt ist das alles m.E. nach nicht sauber und wesentlich komplizierter.
Mit jeder Antwort komme ich weiter und lerne.

Danke!!!

ebs17

ZitatHabe nur das Problem, dass diese Arbeiten manchmal über zwei Tage gehen, weil der MA kurz vor Ferieabend noch was anfängt und am nächsten Tag dann weiter macht....
... und bei einer richtigen Arbeit könnte es auch über mehrere Tage gehen und ein Wochenende und ein Feiertag dazwischen liegen, schon verstanden.

ZitatHat jemand einen Ansatz
Der wurde doch schon angedeutet.

1) Du erzeugst eine Arbeitszeitentabelle pro Mitarbeiter bzw. nur für den nachgefragten Mitarbeiter,
so etwas wie
MA_ID | Tagesdatum | Beginn | Ende

2) Als Hilfstabelle hat man eine Zeitentabelle, bspw. volle Stunden oder Viertelstunden fortlaufend. Zuzüglich eine Kalendertabelle, um Arbeitstage ableiten zu können

3) Aus diesen Tabellen  werden die Zeittakte ermittelt, in denen der MA potentiell arbeitet

4) Jetzt kommt die ursprüngliche Tabelle mit den Aufträgen ins Spiel. Dort gibt es einen Start und ein Ende. Jetzt wird ermittelt, welche der Zeittakte aus 3) dazwischen liegen.

5) Anzahl der ermittelten Zeittakte x Zeittaktdauer ergibt die verwendete Zeit.
Mit freundlichem Glück Auf!

Eberhard

shinoda70

Erstmal vielen Dank für Eure Antworten und Inspirationen