1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

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.

 

 

Dateien:

Berechnen von Zeiten über 24 Stunden

ab A2007

Die Zip-Datei enthält eine Version ab A2007

Datum 17.09.2018
Dateigröße 29.02 KB
Download 396

Ähnliche Artikel