Neuigkeiten:

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

Mobiles Hauptmenü

Abwesenheitsberechnung in Personalverwaltung

Begonnen von ellinho, Januar 10, 2012, 15:11:10

⏪ vorheriges - nächstes ⏩

ellinho

Hallo zusammen.
Ich habe eine Berechnung der Abwesenheitstage (Urlaub, Krankheit usw.) in meiner Personalverwaltung, die leider nicht immer funktioniert.
Habe ich einen Datensatz 27.12.2010 - 05.01.2011 als Urlaub bei einem Mitarbeiter drin stehen, rechnet er mit der folgenden Funktion nur korrekt, wenn das aktuelle Tagesdatum sich in 2011 befindet. Führe ich die Funktion heute aus, rechnet er vom 27.12.2010 - 05.01.2012. Was stimmt an der Funktion nicht ? Hat das etwas mit der Variablen "aktTag" zu tun?

Public Function AnzArbTageMA(VMDatumvon As Date, VMDatumbis As Date, strMAID As String) As Long
Dim aktTag As Date
For aktTag = VMDatumvon To VMDatumbis
    If IstArbeitstag(aktTag, strMAID) Then
    AnzArbTageMA = AnzArbTageMA + 1
    End If
Next
End Function

Ich hoffe, mir kann da jemand helfen.

Gruß, Karsten

MzKlMu

Hallo,
am einfachsten macht man das mit einer Hilfstabelle die alle Datumswerte eines Zeitraums erfasst. Feiertage sind in dieser Tabelle anzuhaken.
Dann lässt sich mit einer einfachen DCount Funktion die Anzahl der Arbeitstage zwischen 2 beliebigen Datumswerten ermitteln.

Beispieldb anbei. Im Beispiel gibt es ein Formular Erläuterungen, bitte lesen.

[Anhang gelöscht durch Administrator]
Gruß Klaus

ellinho

@MzKlMu
Danke für die Antwort.
Leider ist es nicht ganz so einfach gewesen, da verschiedene Mitarbeiter an manchen Wochentagen gar nicht arbeiten. Somit zählen manche Abwesenheitstage nicht. Es wurden deshalb pro Mitarbeiter die Felder SollstdMo, SollstdDi, SollstdMi usw. definiert. Eine Funktion für die Berechnung der Feiertage steht auch noch dahinter. Die Berechnung funktioniert ja auch normalerweise. Allerdings bekomme ich jedes Jahr im Januar das Problem, dass wenn ein jahresübergreifender Datensatz (wie in diesem Fall 27.12.2010 - 05.01.2011) vorhanden ist, die Berechnung fehlerhaft erfolgt (in diesem Fall vom 27.12.2010 - 05.01.2012 und nicht bis zum 05.01.2011).
Vielleicht hat jemand noch eine Idee.
Danke.
Gruß, Karsten

ellinho

Hallo Leute.

Habs gelöst bekommen. Manchmal sieht man vor lauter Bäumen den Wald nicht.  :)
Ein Abfragefeld für den Datumsaufbau war falsch definiert und "bastelte" immer ein falsches Enddatum zusammen.
Trotzdem Danke.

Gruß, Karsten