Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Truckerling am Februar 20, 2017, 20:38:52

Titel: Hilfe bei DateDiff
Beitrag von: Truckerling am Februar 20, 2017, 20:38:52
Hallo,

bin neu hier.

Kann mir jemand den nachfolgenden VBA-Code analysieren?
Die Funktion macht nicht das, was ich will.


Public Function CalcDiffTime(ByVal TimeS, ByVal TimeE, ByVal TimeP)
If IsNull(TimeS) Or IsNull(TimeE) Then Exit Function
If TimeS > TimeE Then
TimeE = TimeE + 1 - Nz(TimeP, 0)
End If
CalcDiffTime = DateDiff("n", (TimeS), (TimeE)) / (60 * 24)

End Function


Danke
Titel: Re: Hilfe bei DateDiff
Beitrag von: MzKlMu am Februar 20, 2017, 20:43:12
Hallo,
verrätst Du auch was die Funktion machen soll ?
Titel: Re: Hilfe bei DateDiff
Beitrag von: PhilS am Februar 20, 2017, 20:43:31
Zitat von: Truckerling am Februar 20, 2017, 20:38:52bin neu hier.
Herzlich willkommen!
Zitat von: Truckerling am Februar 20, 2017, 20:38:52Die Funktion macht nicht das, was ich will.
Dann solltest du uns auch verraten, was du willst!

Programcode kann man übrigens mit dem #-Button hier im Forum besser lesbar formatieren.
Titel: Re: Hilfe bei DateDiff
Beitrag von: Truckerling am Februar 20, 2017, 20:52:06
Also, die Funktion läuft im Ausdrucksgenerator zur Anzeige von Arbeitszeiten in einem Bericht.
TimeS ist die Startzeit, TimeE die Endzeit und TimeP die Pausenzeit.
Der Bereich TimeS bis TimeE abzüglich TimeP ergibt die Arbeitszeit.
Erforderlich wurde die Funktion durch die Variante, das bsp 20:00 begonnen wird und 03:00 am nächsten Tag geendet wird und dazwischen 1,0 Std Pause ist.
Das ist die Anforderung.
Leider erhalte ich als Ergebnis nur die Differenz von TimeS und TimeE. TimeP wird nicht abgezogen. Wo liegt der Fehler?

Danke soweit
Titel: Re: Hilfe bei DateDiff
Beitrag von: daolix am Februar 20, 2017, 21:28:58
hallo

liegt wahrscheinlich daran das Pause nur berücktsichtigt wird wenn Start grösser Ende ist.
probier halt mal

Public Function CalcDiffTime(ByVal TimeS, ByVal TimeE, ByVal TimeP)
If IsNull(TimeS) Or IsNull(TimeE) Then Exit Function
If TimeS > TimeE Then
TimeE = TimeE + 1
End If
CalcDiffTime = DateDiff("n", (TimeS), (TimeE  - Nz(TimeP, 0))) / (60 * 24)

End Function
Titel: Re: Hilfe bei DateDiff
Beitrag von: Truckerling am Februar 20, 2017, 21:34:34
Funktioniert. Dankeschön.