Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: AccessDo66 am August 03, 2023, 12:14:23

Titel: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: AccessDo66 am August 03, 2023, 12:14:23
Hallo, wie lautet die korrekte Formel für die Berechnung einer Zeitdifferenz in einer Abfrage in Stunden zwischen zwei unterschiedlichen Datums- und Zeitangaben?
Mein Versuch lautete:

Differenz: ([Datum_ende]+[Zeit_ende])-([Datum_anfang]+[Zeit_anfang]).



Das funktioniert nicht.
Titel: Re: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: MzKlMu am August 03, 2023, 12:16:41
Hallo,
multipliziere Deine obige Formel mit 24.
Ergibt die Stunden als Dezimalzahl.
Titel: Re: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: markusxy am August 03, 2023, 17:48:58
Man könnte natürlich auch die dafür vorgesehene Funktion verwenden: datediff (https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/datediff-function)
Titel: Re: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: MzKlMu am August 03, 2023, 17:55:28
Hallo,
Datediff halte ich hier für unpassend. Datediff liefert ja nur Ganzzahlen. Man müsste dann Minuten (n) verwenden und dann durch 60 teilen. Da kann ich dann gleich mit 24 multiplizieren.

Wobei ich natürlich annehme, dass dezimale Stunden benötigt werden.
Titel: Re: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: AccessDo66 am August 05, 2023, 09:20:54
Zitat von: MzKlMu am August 03, 2023, 12:16:41multipliziere Deine obige Formel mit 24.
Ergibt die Stunden als Dezimalzahl.
Das funktioniert. Nur muss ich die Multiplikation von meinem Ergebnis mit 24 in einen neues Feld packen.
ergebnis: [tbl_datum]![date_ende]+[tbl_zeit]![zeit_ende]-([tbl_datum]![date_anfang]+[tbl_zeit]![zeit_anfang])*24 Damit erhalte ich als Ergebnis "#Zahl!". Liegt wahrscheinlich an den Klammern. Ich probierte aber bereits verschiedene Varianten aus. Wie bekomme ich die Dezimalzahl zweistellig hinter dem Komma?
Titel: Re: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: MzKlMu am August 05, 2023, 09:53:08
Hallo,
Deine Antwort ist etwas verwirrend.
Die gezeigte Formel für Ergebnis ist falsch.
Punkt geht vor Strichrechnung (Mathe Grundlagen).
Du musst erst die Differenz errechnen und dann mit 24 multiplizieren. Du musst also um den Differenzausdruck ein Klammerpaar einsetzen.
Differenz: ( ([Datum_ende]+[Zeit_ende])-([Datum_anfang]+[Zeit_anfang]) ) * 24Die Tabellennamen im Ausdruck sind überflüssig.

ZitatWie bekomme ich die Dezimalzahl zweistellig hinter dem Komma?
In der Abfrage bleibt die Zahl wie sie ist mit allen Kommastellen.
Formatiert wird unmittelbat zu Anzeige wenn alle weiteren Rechenoperationen mit der Differenz abgeschlossen sind.
Titel: Re: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: ebs17 am August 05, 2023, 10:01:57
Zahl zweistellig hinter dem Komma - Runden! Wäre auch Anwendung von Mathematik.
Titel: Re: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: AccessDo66 am August 07, 2023, 10:33:49


ZitatFormatiert wird unmittelbat zu Anzeige wenn alle weiteren Rechenoperationen mit der Differenz abgeschlossen sind.

Wie funktioniert die Formatierung? Ich kenne nur Format. Dies wandelt aber eine Zahl in Text um.
Gibt es eine andere Variante, die die Zahl nach zwei Stellen hinter dem Komma "abschneidet"? Der Datentyp Zahl bleibt erhalten.
Titel: Re: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: MzKlMu am August 07, 2023, 10:54:22
Hallo,
Du darfst nicht die Formatfunktion verwenden.
Im Formularfeld (oder Berichtsfeld) das Du zur Anzeige der Differenz verwendest, kannst Du direkt das Format einstellen.
Siehe Bild:
Titel: Re: Zeitdifferenzberechnung in h innerhalb einer Abfrage
Beitrag von: ebs17 am August 07, 2023, 12:59:46
Noch einmal: RUNDEN!

Die Format-Eigenschaft verschiebt nur die Sichtbarkeit der Anzeige, weitere Dezimalstellen bleiben intern (=> Wert) erhalten. So etwas kann dann "unerwartet und völlig überraschend" besondere wunderliche Situationen auslösen:
- 3,50 € sind nicht gleich 3,50 €
- Die Summe aus angezeigten Werten ist anders als die Summe, die man mathematisch erwarten würde.