Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: harvey186 am August 25, 2010, 12:40:19

Titel: Summe für Werte im Format h:nn
Beitrag von: harvey186 am August 25, 2010, 12:40:19
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 ??
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: oma am August 25, 2010, 13:08:38
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
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: harvey186 am August 25, 2010, 16:32:55
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 ??
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: oma am August 25, 2010, 17:13:35
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
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: harvey186 am August 25, 2010, 17:25:58
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
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: oma am August 25, 2010, 17:40:39
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]
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: harvey186 am August 25, 2010, 17:47:25
Danke, aber das nutzt mir nicht viel, denn ich habe z.B. Start 23:15 und Ende 05:00. Dann funktioniert das nicht.
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: oma am August 25, 2010, 18:26:55
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
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: harvey186 am August 25, 2010, 18:58:17
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
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: oma am August 25, 2010, 21:03:30
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]
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: harvey186 am August 26, 2010, 11:41:29
Oh, danke, ich werd das heute mal ausprobieren.

Danke, Harvey.
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: harvey186 am August 26, 2010, 16:54:44
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]
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: MzKlMu am August 26, 2010, 19:20:31
Hallo,
anbei ein Beispiel. In der Abfrage ist die Formel die ich schon mal vorgeschlagen hatte.



[Anhang gelöscht durch Administrator]
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: oma am August 26, 2010, 19:44:30
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
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: harvey186 am August 27, 2010, 07:50:56
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
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: Jonny am August 27, 2010, 12:09:34
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
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: MzKlMu am August 27, 2010, 12:17:42
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.
Titel: Re: Summe für Werte im Format h:nn
Beitrag von: oma am August 27, 2010, 12:21:31
Hallo,

naja, ich denke ihr seit beide gut ;D    denn es geht auch:

Dauer: Wenn([Ende]<[Anfang];1-[Anfang]+[Ende];[Ende]-[Anfang])

Gruß Oma

Titel: Re: Summe für Werte im Format h:nn
Beitrag von: oma am August 27, 2010, 18:27:46
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]