Problemstellung:
In MS-Access ist es mit Bordmitteln nicht möglich Zeiten über 24 Stunden zu berechnen
In dieser Bsp-DB möchte ich zeigen wie es trotzdem geht.
Voraussetzungen:
Das Bsp ist ab A2007 lauffähig.
Funktionsweise:
Wenn in MS-Access Zeiten vorliegen und diese sollen addiert werden kommt kein richtiges Ergebnis raus.
Das Ergebnis sollte 43:15 Stunden sein aber da Zeiten über 24 Stunden nicht im Format hh:nn anzeigt
wird nur der Rest vom vielfachen von 24 Stunden angezeigt.
Der Trick zur Berechnung besteht nun darin die Zeiten in Minuten umzurechnen.
Das übernimmt diese Funktion:
Public Function GetMin(vTime As Variant) As Long ' Zeitformat in Minuten umrechnen Dim nPos As Long vTime = CStr(vTime) nPos = InStr(vTime, ":") If nPos > 0 Then GetMin = Val(Left$(vTime, nPos - 1)) * 60 + Val(Mid$(vTime, nPos + 1)) Else GetMin = Val(vTime) End If End Function
Die Umrechnung der Minuten in das Format hh:nn übernimmt dann diese Funktion:
Public Function CalcTime(lngTime As Long) As String 'Minuten in Zeitformat hh:mm umrechnen 'auch über 24h und auch negative Zeiten Dim nMin As Long Dim nStd As Long If lngTime >= 0 Then nStd = Int(lngTime / 60) nMin = lngTime - (nStd * 60) CalcTime = Format$(nStd, "00") & ":" & Format(nMin, "00") Else lngTime = lngTime * -1 nStd = Int(lngTime / 60) nMin = lngTime - (nStd * 60) CalcTime = "-" & Format$(nStd, "00") & ":" & Format(nMin, "00") End If End Function
Das Ganze geht auch mit negativen Zeiten (s.Formular "frm_AZ2")
Hier wird die Differenz von Sollzeit und Istzeit berechnet.
Im Bsp ist die Differenz negativ. Dieser Negativwert lässt sich auch im Format "-hh:nn" anzeigen.
Berechnen von Zeiten über 24 Stunden
ab A2007
Die Zip-Datei enthält eine Version ab A2007
Ähnliche Artikel
Weiterlesen...