Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Darstellen von Stunden >24

Begonnen von ricog, März 18, 2011, 10:40:49

⏪ vorheriges - nächstes ⏩

ricog

Hallo Leute,

ich suche ne Lösung für folgendes Problem...

Ich hab einen Bericht erstellt der mir die monatliche Arbeitszeit ausgeben soll. Im Detailbereich gibt es ua. die berechneten Felder "Plus" und "Minus", welche mir Mehr- bzw. Wenigerarbeitszeit ausgeben.

Im Berichtsfuß wird nun die Summe ausgerechnet, jeweils für "Plus" und "Minus".
Bis hierhin kein Problem. Bis 24 h geht das ja mit mit =Summe[Plus]... usw.
Wenn mehr als 24h das Ergebnis sind , habe ich donkarl faq 2.10 ausprobiert, geht auch.

jetzt das Problem, ich muß noch im Berichtsfuß zwei Felder darstellen, wo "Plus" - "Minus"gerechnet wird und umgedreht.
Bis 24h auch wieder kein Problem, aber wenn das Ergebnis größer als 24h ist...

Zeitformat ist übrigens hh:nn.

Ich suche also eine Lösung, wo ich mit donkarls Variante weiterrechnen kann, oder
eine Lösung, bei der die Zahl, die hinter dem Zeitformat hh:nn steht wieder in das Zeitformat zurückgerechnet wird, und das
auch > 24h...

Ich hoffe ich habe das Problem einigermaßen verständlich erläutert...

Und nicht böse sein, ich muß das Forum jetzt erstmal verlassen, wg. Arbeit, schau dann heute Abend wieder rein.

MzKlMu

#1
Hallo,
bei einem solchen Vorhaben würde ich alle Zeiten grundsätzlich in Minuten rechnen und dann diese bei Bedarf in Stunden und Minuten umrechenen.
Zumal es für Zeitmengen >24h keinen Formatbefehl gibt.
Gruß Klaus

DF6GL

Hallo,

einen Zeitpunkt >23:59:59  gibt es nicht.



Die Darstellung einer Zeitdauer im "Zeitpunktformat" ist IMH(orr)O eh unsinnig, wenn auch vielerorts benutzt.  


Wenn Du Dir das Leben erleichtern willst, dann rechne intern mit Dezimalzahlen in Einheit Miunten (oder auch Stunden) , und wandle erst die Rechenergebnisse ins  Zeitformat um.


Nichtsdestotrotz kannst Du versuchen, erst die Differenz der Zeiten zu berechnen und dann zu summieren:

=Summe(Datediff("n";Minus;Plus))

ricog

OK, die Idee alles in Minuten zu rechnen hatte ich auch schon, aber wie bringe ich dann die Minuten in das Format hh:nn

z.B.: 1845 min = 30, 75 h = 30:45

Josef P.

Hallo!

Ich spielte mich vor einiger Zeit auch einmal mit dieser Formatierung.
Ergebnis: Format für mehr als 24 Stunden

mfg
Josef

lumbumba

evtl auch das:
=Format(Fix([DeinFeld]\60);'#.###') & ":" & Format([DeinFeld] Mod 60, '00')
---

ricog

Vielen Dank schon mal, ich schau mir das nochmal in Ruhe an und melde mich wieder...

Ciao Rico

MzKlMu

Hallo,
Zitat von: ricog am März 18, 2011, 21:45:21
OK, die Idee alles in Minuten zu rechnen hatte ich auch schon, aber wie bringe ich dann die Minuten in das Format hh:nn z.B.: 1845 min = 30, 75 h = 30:45
Abgesehen von der Universallösung von Josef, gibt es auch eine einfache Variante:
=Minuten\60 & ":" & Minuten Mod 60
\ = ganzahliges Teilen
Mod liefert den Rest einer ganzzahligen Teilung.
1845\60=30
1845 Mod 60 = 45
Beide Zahlen und dem : mit & addiert ergibt 30:45
Gruß Klaus

ricog

Guten Abend!

Ich habe verschiedenes ausprobiert...

Die Lösung von MzKlMu zeigt z.B. auch solche Werte an, wie 0:0 oder 8:0 oder 8:50 ... ist nicht das was ich suche (00:00, 08:00, 08:50).

Die Lösung von lumbumba funktioniert, in der folgenden Form:

=Format(Fix([DeinFeld]\60);'00') & ":" & Format([DeinFeld] Mod 60, '00')

Die Lösung von Josef P. würde ich auch gerne noch ausprobieren, aber da brauche ich eine Anleitung für, vielleicht kann mir da noch einer helfen?!..

Vielen vielen Dank... Rico

Josef P.

Hallo!
Zitataber da brauche ich eine Anleitung für

Wenn du die Prozedur in ein Standardmodul kopierst, wird damit die VBA-Format-Funktion "überschrieben".
Falls du das nicht willst, müsstest du den Funktionsnamen ändern oder die Funktion z. B. in eine Klasse einbauen.

Anwendungsbeispiel:

Const Dat1 As Date = #3/21/2011 2:34:56 PM#
Const Dat2 As Date = #3/20/2011#
Dim Diff As Date

Diff = Dat1 - Dat2
Debug.Print Format(Diff, "[hh]:nn:ss")


Weitere Beispiele kannst du aus der Testklasse ("FormatText_*"-Methoden) entnehmen.

mfg
Josef



Anwendungsbeispiele sind

ricog

Ich glaub das ist paar Nummern zu hoch für mich...

Ich kann mit der VBA-Format-Funktion leider nix anfangen, auch nicht mit Standartmodul...

Funktion in Klasse einbauen, Funktionsname ändern ??? ???

Tut mir leid...

oma

Hallo Rico,

vielleicht hilft dir folgende Funktion, die für verschiedene Möglichkeiten benutzt werden kann

Public Function fctDateZeit(DateZahl As Double) As String
' Darstellung von Datumswerte als String in Zeitformat
' Aufruf: fctDatezeit([Datum2]-[Datum1])    -Datumsfelder mit Datum- und Zeit oder Zeit
' Aufruf: fctDatezeit([Datum2]+[Datum1])    -Datumsfelder mit Zeit
' Aufruf: fctDateZeit(Summe([Datum1]))      -Datumsfeld mit Zeit in Formular / Berichtsfuß
' Aufruf: fctDateZeit(Sum([DatumZeit]))     -Datumsfeld mit Zeit in gruppierter Abfrage

fctDateZeit = Format(Fix((DateZahl) * 24), "00") & ":" & Format(DateZahl, "nn") & ":" & Format(DateZahl, "ss")

End Function


In der Funktion sind die verschiedene Möglichkeiten zum Einsatz dargestellt
Kopiere die Funktion in ein beliebiges Modul deiner DB u. benutze für dein Beispiel im Berichtsfuß:

=fctDatezeit(Summe([Plus]))
=fctDatezeit(Summe([Minus]))
=fctDatezeit(Summe([Plus])-Summe([Minus]))

Gruß Oma
nichts ist fertig!

Josef P.

Hallo!
Zitat von: ricog am März 21, 2011, 21:44:48Ich kann mit der VBA-Format-Funktion leider nix anfangen, auch nicht mit Standartmodul...

Für solche Fälle könnte man versuche mit Google & Co. nach den Begriffe "Standardmodul" zu suchen.
Das liefert z. B.: http://office.microsoft.com/de-at/access-help/module-HP005186814.aspx

Bezüglich VBA-Format-Funktion: Es gibt in VBA eine eingebaute Funktion mit dem Namen Format (VBA.Format).
Wenn du Format irgendwo im Code eintippst, markierst und anschließend {F1} drückst, kannst du die Hilfe dazu aufrufen.

mfg
Josef

ricog

Hallo Leute!

Ich danke erstmal sehr für eure Hilfe...

Ich verwende erstmal den Vorschlag von lumbumba, den ich etwas verändert habe...

die anderen Vorschlage probiere ich auch noch aus...