thomas1972
Goto Top

Minuten in Zeit umrechen über Abfrage Access

Hallo,

ich habe in einer Tabelle Minuten (Positive wie Negative Werte)
nun habe ich in einer Abfrage Hilfspalten eingebunden um diese Minuten wieder in Uhrzeit darzustellen.

Problem hierbei, dass sobald es mehr als 60 Minuten sind der Wert in der Spalte + 1 Stunde mehr darstellt.
Dieses Verhalten habe ich nur bei Negativminuten

Beispiel

Abfrage1
Spalte 1
Stunden_soll_haben

-69
-129
-39
-60
-59
-61
51
111
141

Spalte 2
Soll-Haben
00:00:00
02:09:00
03:09:00
01:39:00
01:00:00
01:59:00
02:01:00
00:51:00
01:51:00
02:21:00

als Feldaufbau habe ich

Soll-Haben: ZeitSeriell(Int([Stunden_soll_haben]/60);[Stunden_soll_haben] Mod 60;0)
verwendet.

Vielleicht hat hier jemanden einen Ansatz, warum Access 1 Stunde mehr anzeigt.
Gleichzeitig möchte ich erreichen, sobald ein Minuswert angezeigt wird, dass dieser auch die Spalte negativ darstellt.

Content-Key: 269895

Url: https://administrator.de/contentid/269895

Printed on: April 23, 2024 at 20:04 o'clock

Mitglied: 114757
114757 Apr 22, 2015 updated at 11:53:56 (UTC)
Goto Top
Du musst schon absolute Zahlen zum Rechnen nehmen face-wink
Soll-Haben: Wenn(Vorzchn([Stunden_soll_haben])=-1;"-";"") & ZeitSeriell(Int(Abs([Stunden_soll_haben]/60));Abs([Stunden_soll_haben]) Mod 60;0)
Gruß jodel32
Member: thomas1972
thomas1972 Apr 22, 2015 at 12:25:27 (UTC)
Goto Top
Danke, genau das wars gewesen face-smile
Member: thomas1972
thomas1972 Apr 22, 2015 at 18:24:37 (UTC)
Goto Top
Hallo jodel32,

Ich muss doch nochmal auf deine Antwort zurück kommen.
Sobald der Wert >24 Stunden ist gibt er mir ein Datum 31.12.1899 aus, wie kann ich hier größer 24 Stunden ausgeben lassen?

Gruss Thomas
Mitglied: 114757
114757 Apr 22, 2015 updated at 19:46:32 (UTC)
Goto Top
Dann etwa so
Soll-Haben: Wenn(Vorzchn([Stunden_soll_haben])=-1;"-";"") & Rechts("00"&Int(Abs([Stunden_soll_haben])/60);2)&":"&Rechts("00"&(Abs([Stunden_soll_haben]) Mod 60);2)&":00"  
Und mach das zu einem Textfeld - ein Datumsformatiertes Feld wird mit Zeiten größer 24:00 nicht klar kommen, das sollte klar sein face-wink

Gruß jodel
Member: Biber
Biber Apr 22, 2015 updated at 22:23:02 (UTC)
Goto Top
Moin thomas1972,

ich finde es gruselig....

Ich finde es gruselig, dass dein Titel "Minuten in Zeit umrechnen" heisst und nach ein paar Lösungsvorschlägen die Anforderung umdefiniert wird zu "Minuten als Zeitintervall in Tagen, Stunden und Minuten ausgeben"

Ich finde es gruselig, dass deine Minuten-Werte in einem Feld namens "Stunden_soll_haben" untergebracht sind.
Ich hätte vielleicht den Feldnamen "Minuten" gewählt,
Aber hey! Selbst der Feldname "grzkging" wäre sprechender und weniger irreführend gewesen.

Ich finde es gruselig, dass deine neue Frage lautet " wie kann ich hier größer 24 Stunden ausgeben lassen?"

Sollen wir Vorschläge machen? Was wäre denn eine brauchbare Formatierung?
Der von jodel32 in den Ring geworfene String "hh:mm:ss" oder lieber eine Ausgabe " dd Tage hh Std mm Min"?

Ich finde es gruselig, wenn die SQL-Statements hier in der Form gepostet werden, wie sie in dem Access-Abfrage-Assistenten von den Unterschleißheimern eingedeutscht werden und das auch nur für ein Feld.

Macht es denn viel Aufwand, auf "SQL-Ansicht" zu gehen und das komplette Statement hier formatiert zu posten?.

Okay, das musste sein.

Mein Ansatz wäre hier:
SELECT minutentest.Minuten
, IIf(Abs(minuten/1440)>1,Format(Fix(Abs(minuten)/1440),"@@")   
    & " Tage ",Space(7)) & Format(minuten/1440,"hh nn")   
  & IIf(Sgn([Minuten])=-1,"-","+") AS diff  
FROM minutentest;
Wobei meine Tabelle "minutentest" heisst und mein Feld mit den Minuten... hab ich weniger kreativ benannt als du.

Die Ausgabe wäre dann in etwa
Minuten	diff
0	       00 00+
177	       02 57+
33	       00 33+
-43	       00 43-
-240	       04 00-
230	       03 50+
-230	       03 50-
3400	 2 Tage 08 40+
-2430	 1 Tage 16 30-

P.S. Und die eingeunterschleißheimerte Praktikantenversion der Feldes "Diff" lautet
diff: Wenn(Abs(minuten/1440)>1;Format(Fix(Abs(minuten)/1440);"@@") & " Tage ";Leerzchn(7)) & Format(minuten/1440;"hh nn") & Wenn(Vorzchn([Minuten])=-1;"-";"+")
Falls es sich so besser lesen lässt.

Kopfschüttelnd
Biber