Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Summe für Werte im Format h:nn

Begonnen von harvey186, August 25, 2010, 12:40:19

⏪ vorheriges - nächstes ⏩

harvey186

Moin, ich habe in meinem Berecht eine Spalte mit errechneten Stunden und Minuten. Nun möchte ich eine Summe am Berichtsende dafür erzeugen.
Mit =Summe([Ausdr1]) erhalte ich immer nur einen Wert < 24 !!!

Was kann ich tun, damit mir die volle Summe, also z.B. 125:23 errechnet wird ??

oma

Hallo,

kopiere Funktion in beliebigs Modul deiner DB:

Public Function fctDateZeit(DateZahl As Double) As String
' Darstellung von Datumswerte in Zeitformat
' Aufruf: fctDatezeit([Datum2]-[Datum1])        wenn Datum1, Datum2 Datumsfelder mit dd.mm.yyyy hh:ss oder hh:ss
' Aufruf: fctDateZeit([Datum1]+[Datum2])        wenn Datum1, Datum2 Datumfelder mit hh:ss
' Aufruf: fctDateZeit(Summe([Datum1]))          in gruppierter Abfrage, Formularfuß bzw Berichtsfuß

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

End Function



Zur Darstellung der Zeitsumme kannst diese Funktion  benutzen.

Hierzu erstellst Du im Berichtsfuß ein ungebundenes Feld mit =fctDatezeit(Summe([DeinDatumsfeld])
Der Funktion wird Summe([DeinDatumsfeld]) übergeben.

Gruß Oma
nichts ist fertig!

harvey186

mhm, also ich hab ja leider keine Ahnung.
Also, das Feld [Zeit] ist die Differenz zwischen [Startzeit] und [Endzeit]. Diese beiden Felder haben das Format: Zeit,24Std.
Das Feld [Zeit] hat das Format: h:nn.

Und wenn ich deinen Code richtig verstehe, geht er von einem Feld mit Datum UND Uhrzeit aus. Da ich kein Datum benutze, kann das nicht klappen, oder ??

oma

Hallo,

ZitatUnd wenn ich deinen Code richtig verstehe, geht er von einem Feld mit Datum UND Uhrzeit aus

wo steht denn das?
Mit der Funktion wird die Summe eines Feldes mit dem Format: Zeit,24Std. im Berichtsfuß dargestellt.
Eine analoge Funktion findest du in  www.donkarl.com?FAQ2.10

Hast du es denn schon versucht?

Gruß Oma
nichts ist fertig!

harvey186

#4
hab's gerade versucht. Als Ergebnis wird 295:50:00 ausgegeben. Richtig wäre aber 54:70.

Nachtrag:
Ich habe jetzt mal mit 3 Werten gearbeitet: 7:00 / 2:00 / 0:04  Ergebnis wäre also 9:04. Die Funktion errechnet aber 57:04:00

oma

Hallo,

wenn dein Feld Zeit eine Differenz ist, musst du das auch in der Summe im Berichtsfuß so einsetzen.

Anbei ein kleines Formularbeispiel

Gruß Oma

[Anhang gelöscht durch Administrator]
nichts ist fertig!

harvey186

Danke, aber das nutzt mir nicht viel, denn ich habe z.B. Start 23:15 und Ende 05:00. Dann funktioniert das nicht.

oma

Hallo,

das ist doch egal, wie du die Differenz berechnest. Mit der gleichen Berechnungsweise dann in der Funktion einsetzen und die Sache klappt!

Gruß Oma
nichts ist fertig!

harvey186

Sorry, aber das Ergebnis ist einfach falsch:
Ich habe jetzt mal mit 3 Werten gearbeitet: 7:00 / 2:00 / 0:04  Ergebnis wäre also 9:04. Die Funktion errechnet aber 57:04:00

oma

#9
Hallo,

Zitatdenn ich habe z.B. Start 23:15 und Ende 05:00.

ich weiss jetzt nicht, wie du dann die Differenz ausrechnest?

Habe mal eine kleine Funktion fctZeit geschrieben, mit der die Differenz ausrechnen kannst, wenn Ende < Anfang ist
(Vorraussetzung, die Differenzen beinhalten nur einen Tageswechsel)

Mit:
Public Function fctZeit(Date1 As Date, Date2 As Date) As Date

If Date1 < Date2 Then
   fctZeit = CDate(Date2 - Date1)
Else
   fctZeit = DateAdd("h", Round(DateDiff("s", Date1, #11:59:59 PM#) / 3600), Date2)
End If

End Function


werden die Differenzen berechnet und die Summe der Differenzen dann mit:

Public Function fctDateZeit(DateZahl As Double) As String
fctDateZeit = Format(Fix((DateZahl) * 24), "00") & ":" & Format(DateZahl, "nn") & ":" & Format(DateZahl, "ss")
End Function


Probiere mal mit Werten im neuen Beispiel!

Gruß Oma

[Anhang gelöscht durch Administrator]
nichts ist fertig!

harvey186

Oh, danke, ich werd das heute mal ausprobieren.

Danke, Harvey.

harvey186

Hallo Oma,

hab gerade mal in deinem Beispiel zwei Zeiten eingegeben, die über den 24 Uhr hinaus gehen. Wie du in der Anlage sehen kannst, rechnet auch das Beispiel falsch, siehe den ersten und den letzten Datensatz.

Schade auch  :(

[Anhang gelöscht durch Administrator]

MzKlMu

Hallo,
anbei ein Beispiel. In der Abfrage ist die Formel die ich schon mal vorgeschlagen hatte.



[Anhang gelöscht durch Administrator]
Gruß Klaus

oma

Hallo,

sorry, war gerade beim Versuch meine Funktionen richtig zu gestalten, da kommt der Lösungsvorschlag von Klaus.

Ich denke, dass klappt, super auch die Datstellung der Summe im Formularfuß!!

Gruß Oma
nichts ist fertig!

harvey186

OK, danke. hab gerade das Beispiel ausprobiert. Sieht gut aus. :-)
Werde es nachher mal in meine Sachen einbauen.
Ich sag Bescheid, wenn's klappt.

Danke,
Harvey