Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: Manon am August 12, 2015, 09:02:45

Titel: Sekundendauer in Zeitformat
Beitrag von: Manon am August 12, 2015, 09:02:45
Hallo
In meinem Bericht steet daß 419428 Sekunden berechnet werden
Ich möchte dieses jedoch in folgendem Format [hh]:nn:ss - so daß 116:30:28 das Resultat wird und nicht 20:30:28

Danke vielmals
Titel: Re: Sekundendauer in Zeitformat
Beitrag von: MzKlMu am August 12, 2015, 10:20:24
Hallo,
dazu ist etwas Aufwand notwendig. Ich würde da eine Funktion anlegen.
Dazu folgender Code in einem allgemeinen Modul:
ZitatPublic Function fncFormathhmmss(GesSekunden As Long) As String
Dim Stunden As Long, Minuten As Long, Sekunden As Long
    Stunden = GesSekunden \ 3600 'Achtung: \ = Backslash verwenden
    Minuten = (GesSekunden - Stunden * 3600) \ 60   
    Sekunden = GesSekunden - Stunden * 3600 - Minuten * 60
    fncFormathhmmss = Stunden & ":" & Format(Minuten, "00") & ":" & Format(Sekunden, "00")
End Function
Der Code wurde bewusst als Zitat dargestellt, da der Backslash im Code nicht dargestellt wird.

Aufruf im Berichtsfeld dann so:
=fncFormathhmmss(Sekundenzahl)
Titel: Re: Sekundendauer in Zeitformat
Beitrag von: DF6GL am August 12, 2015, 10:32:56
Hallo,

auch:

Public Function fktFormatSec(S As Long) As String
Dim lngH As Long, dblTime As Double
lngH = S \ 3600
dblTime = S / 86400
fktFormatSec = lngH & ":" & Format(dblTime, "nn:ss")
End Function

Titel: Re: Sekundendauer in Zeitformat
Beitrag von: Manon am August 12, 2015, 12:13:59
Hallo und vielen Dank erstmal
Leider verstehe ich folgendes nicht
"dazu ist etwas Aufwand notwendig. Ich würde da eine Funktion anlegen" Wo die Funktion anlegen? Abfrage oder Bericht?
"Dazu folgender Code in einem allgemeinen Modul" (verstehe ich leider auch nicht)

Ich habe jetzt im Bericht die Zein auf dezimal umgestellt und habe 116.51 Stunden - Resultat ist richtig  :D
Wenn Ihr mir die Erklärung vereinfacht ändere ich meinen Bericht gerne noch einmal um da das Format 116:30:28 mir besser gefallen würde
Titel: Re: Sekundendauer in Zeitformat
Beitrag von: DF6GL am August 12, 2015, 13:59:27
Hallo,

ZitatWo die Funktion anlegen? Abfrage oder Bericht

Wurde doch gesagt:

in einem "allgemeinen Modul" (Standardmodul).

Im Ribbon/Erstellen  "Modul"  anklicken, damit der VBA-Editor geöffnet wird und eben ein Modul anlegt.
Dort eine der beiden (oder alle zwei) hineinkopieren.

Aufgerufen werden können dann die Funktionen dort, wo sie gebraucht werden.  Im(!) Bericht z. B. im Steuerelementinhalt des Textfeldes, das dieses "Zeitformat" anzeigen soll:

= fncFormathhmmss([Sekundenfeld])

oder halt mit der anderen Funktion:

= fktFormatSec([Sekundenfeld])
Titel: Re: Sekundendauer in Zeitformat
Beitrag von: MzKlMu am August 12, 2015, 19:34:36
Hallo,
ZitatIch habe jetzt im Bericht die Zein auf dezimal umgestellt und habe 116.51 Stunden - Resultat ist richtig
wie hast Du das auf dezimal umgestellt ?
Das Resultat ist nämlich nicht richtig. 116 Stunden ja, aber der Rest nicht.
0,51 Stunden = 60*0,51 = 30,6 Minuten. Rest 0,6 Minuten = 60*0,6 = 36 Sekunden.
116,51 = 116:30:36
116:30:28 = 116,507777777778 Stunden.

Du hast einen Rundungsfehler in der Umstellung auf dezimal.