Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: schnalli am März 28, 2011, 21:10:40

Titel: Zeit berechnen mit Zentelsekunden
Beitrag von: schnalli am März 28, 2011, 21:10:40
Hallo liebe Access-Gemeinde!

Ich wieder einmal ein PROBLEM - aber ich kann mir vorstellen, dass mir einer von euch helfen kann!

Ich habe in einer Tabelle die Felder Laufzeit und Differenz (text) und ich möchte die Differenz von der Laufzeit abziehen. Aber  mein VBA-Code funktioniert nicht so richtig.
Denn dieser soll auch die Zentelsekunden berücksichtigen. Bei meinem Code habe ich das PROBLEM, dass er dies nicht richtig macht:
Zum Beispiel: 00:20:14,1 - 00:00:13,2 = 00:20:00,9, Bei meinem Code  kommt aber 00:20:01,-1 heraus.
Was habe ich falsch?

Mein VBA-Code lautet:

Public Function zeit_differenz_laufzeit(Laufzeit As String, Differenz As String)
Dim dLaufzeit As Date
Dim dDifferenz As Date
Dim uebertrag As Date
Dim zentel As Integer

dLaufzeit = Left(Laufzeit, 8)
dDifferenz = Left(Differenz, 8)
zentel = 0
zentel = Val(Right(Laufzeit, 1)) - Val(Right(Differenz, 1))
uebertrag = "00:00:00" & Format(zentel / 10, "0")
zeit_differenz_laufzeit = Format(dLaufzeit - dDifferenz + uebertrag, "hh:mm:ss") & "," & Format(zentel Mod 10, "0")
End Function

Danke im voraus Ernst
Titel: Re: Zeit berechnen mit Zentelsekunden
Beitrag von: daolix am März 28, 2011, 22:56:45
weil zentel = Val(Right(Laufzeit, 1)) - Val(Right(Differenz, 1)) in deiner Beispielrechnung ( 1 - 2) -1 als ergebnis rauskomt und du diese "-1" einfach nur als string anfügst.

Code (probiers mal so, ist aber ohne Gewähr) [Auswählen]

Public Function zeit_differenz_laufzeit(Laufzeit As String, Differenz As String)
    Const ZentelSec = 864000
    dLaufzeit = Left(Laufzeit, 8): dLaufzeit = dLaufzeit * ZentelSec + Val(Right(Laufzeit, 1))
    dDifferenz = Left(Differenz , 8): dDifferenz = dDifferenz * ZentelSec + Val(Right(Differenz , 1))
    zeit_differenz_laufzeit= Format(((dLaufzeit - dDifferenz ) \ 10) / 86400, "hh:mm:ss") & Format((dLaufzeit - dDifferenz ) Mod 10, "\,0")
End Function