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 ??
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
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 ??
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 (http://www.donkarl.com?FAQ2.10)
Hast du es denn schon versucht?
Gruß Oma
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
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]
Danke, aber das nutzt mir nicht viel, denn ich habe z.B. Start 23:15 und Ende 05:00. Dann funktioniert das nicht.
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
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
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 Functionwerden 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 FunctionProbiere mal mit Werten im neuen Beispiel!
Gruß Oma
[Anhang gelöscht durch Administrator]
Oh, danke, ich werd das heute mal ausprobieren.
Danke, Harvey.
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]
Hallo,
anbei ein Beispiel. In der Abfrage ist die Formel die ich schon mal vorgeschlagen hatte.
[Anhang gelöscht durch Administrator]
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
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
Hallo Leute,
ich denke es geht gar nicht über mehrer Tage dann kann man die Differenz einfach berechnen
if Anfang < Ende then
Ergebnis = anfang - Ende
else
Ergebnis = 1 - Anfang + Ende
end if
Format bei der Summe muss dann [hh]:mm sein.
Gruß
Johann
Hallo,
genau so wie Du vorschlägst, mach ich es ja, aber halt nur in einer Zeile einer Abfrage. Dein VBA Vorschlag erfordert das Anlegen einer Funktion.
Hallo,
naja, ich denke ihr seit beide gut ;D denn es geht auch:
Dauer: Wenn([Ende]<[Anfang];1-[Anfang]+[Ende];[Ende]-[Anfang])
Gruß Oma
Hallo Kollegen,
nur so nochmal ein paar Bemerkungen:
da viele Progammierer die Verwendung vermischter Datentypen in Ausdrücken vermeiden ( hier http://www.kulpa-online.com/tutorial-vba-3-116.html) (http://www.kulpa-online.com/tutorial-vba-3-116.html)) , wie z.B. DatumEnde +1
wollte ich im besagten Beispiel dieses auch erreichen, u. eine Funktion für die Bereichnung von Ende-Anfang erstellen, wenn Ende < Anfang ist (u. natürlich die Differenz immer unter24h liegt)
Im beiliegendem Beispiel ist die Differenz mit den Formeln von Klaus/Jonny und der erstellten Funktion, mit beiden wird richtig gerechnet!
Nur: in meiner Funktion wird auch mit gemischten Datentypen gerechnet, da ich diese nicht anders hinbekommen habe ;D
Fazit: für die Katz, wenn man sich immer nur an Regeln halten will 8)
Die Summendarstellung von Klaus hat auch einen Vorteil, sie stimmt, egal ob es sich im DetalFeld im einen Wert oder einem berechneten Ausdruck handelt.
Gruß Oma
[Anhang gelöscht durch Administrator]