hugi1987
Goto Top

Access 2007 - Datumsformat Tage,Stunden,Minuten

Hallo,

bei einer Accessauswertung für Zeitbuchungen sollen die Datenwerte, z.B. 0,25 (=15 Minuten) im Format Tag:Stunden:Minuten (also 00:00:15) abgebildet werden.
Das Format hh:nn liefert zumindest schon einmal die Stunden und die Minuten.
dd liefert leider den Tag der Zeitbuchung, z.B. 31 für den 31. einen Monats und nicht den Summenwert der gebuchten Zeit in Tagen.
Wie lautet das Format um die Anzahl der Tage anzuzeigen?

Ich danke euch für eure Mühe.

Grüße Hugi

Content-ID: 167417

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

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

NetWolf
NetWolf 03.06.2011 um 11:44:18 Uhr
Goto Top
Moin Moin,

du unterliegst da einem Irrtum, das "Format" das du suchst gibt es nicht als Datums-/Zeitformat.
Deine Werte sind mathematisch berechnete Zahlen und keine gültigen Datumswerte. D.h. du musst dir selbst den Zeichenstring zusammensetzen und als Text speichern.

Beispiel: TextVar = SummeTage & ":" & SummeStunden & ":" & SummeMinuten
Mit führenden Nullen, wird es etwas umfangreicher face-sad

Grüße aus Rostock
Wolfgang
(Netwolf)
Hugi1987
Hugi1987 05.06.2011 um 19:30:08 Uhr
Goto Top
ah ok, stimmt da hab ich mich leider getäuscht face-sad
wie krieg ich nun aber eine zahl, z.B. 1800 (=30min) in das format Tag:Stunden:Minuten?
wo kann ich im access genau SummeTage & ":" & SummeStunden & ":" & SummeMinuten angeben?

tut mir leid, aber mit access hatte ich bisher nicht viel am hut, wäre klasse wenn du mir einen tipp hättest face-smile

danke und viele grüße face-smile
Biber
Biber 05.06.2011 um 21:54:22 Uhr
Goto Top
Moin Hugi1987,

dein Ansatz mit dem Datumsformat "dd:hh:nn:ss" war schon richtig, aber nicht ganz zu Ende gedacht.
Zwei Denkfehler sind enthalten.
a) mit "1800" als Datums/Zeitwert kann Access natürlich wenig anfangen - die "Grundeinheit" ist immer "ein Tag" gleich 24 Stunden gleich 24*60*60 sec gleich 86400 Sekunden. Erst der Quotient 1800/86400 ist eine gültige Zeitangabe.

b) Wenn du deine 1800/86400 [sec] damit anzeigen lässt, dann wird natürlich der Wert 1800/86400 vom Beginn der Access-Zeitrechnung an gerechnet angezeigt.
Also vom 30.12.1899 an.
Du willst aber eigentlich - zumindest sollte es ausreichen - eine Summe von Stunden in diesem Monat anzeigen.

Das macht die Sache doch handhabbar.

Leider kenne ich Aufbau deiner Tabelle/deines Berichts nicht, deshalb ein Beispielselect auf irgendeine Tabelle mit einem Satz oder mehr:
SELECT  distinct   format(1800/86400, "yyyy:mm:dd:hh:nn:ss") ,  
 format(  dateserial(year(now), month(now), 0)+(864000+1800)/(86400), "dd:hh:nn:ss")")   
 FROM whatever;
Erläuterung:
Ergebnis der Abfrage ist nur ein Datensatz, egal wie viele Datensätze die beliebige "whatever"-Tabelle enthält.
Im ersten Feld wird angezeigt
1899:12:30:00:30:00	
--> die Demo für nackte 1800 sec vom Beginn der Accesszeitrechnung an im Format "yyyy:mm:dd:hh:nn:ss"
--> Ergibt 0 Tage, also den 30.12.1899 plus 0 Stunden + 30 Minuten (1800 sec)

Im zweiten Feld "lasse ich rechnen" 10 Tage plus 1800 Sec "aber alle in diesem Monat".
10 Tage sind, wenn ein Tag gleich 86400 Sekunden hat, logischerweise 864000 Sekunden. Bekomm ich hin.
Zusätzlich gebe ich als Startwert mit den letzten Tag des Vormonats mit DateSerial( diesJahr, dieser Monat, null Tage)
Ist ein bisschen um die Ecke formuliert, aber um Access auszutricksen reicht es.
Angezeigter Wert in dem von dir gewünschten Format "dd.hh:nn:ss" ist
10:00:30:00
--> 10 Tage, 0 Stunden 30 minuten.

Works as designed.

Grüße
Biber
Hugi1987
Hugi1987 06.06.2011 um 10:47:09 Uhr
Goto Top
Danke für die Hilfe, aber ich tu mich leider nochetwas schwer mit der Umsetzung :-P
Ich habe gerade gerade entdeckt, dass sich die gebuchten Zeiten, z.B. 1800, auf Basis von zwei Zeiten errechnen lässt.
Startzeit: 31.05.2011 11:36:38
Endzeit: 31.05.2011 12:06:38
=Zeitbuchung 1800 (30Minuten)

Gibt es vielleicht eine einfachere Methode, mit der ich einfach mithilfe von zwei Datumwerten die Zeitdauer berechnen lassen kann?
Die Ausgabe sollte wieder im Format dd:hh:nn erfolgen.
Evtl. datediff?Leider konnte ich mit datediff lediglich ein Wert berechnen lassen wie z.B. Stunde ODER Minute, nicht beides zusammen.

Freundliche Grüße
Biber
Biber 06.06.2011 um 18:45:04 Uhr
Goto Top
Moin Hugi1987,

Zitat von @Hugi1987:
Danke für die Hilfe, aber ich tu mich leider nochetwas schwer mit der Umsetzung :-P
Ich habe gerade gerade entdeckt, dass sich die gebuchten Zeiten, z.B. 1800, auf Basis von zwei Zeiten errechnen lässt.
Startzeit: 31.05.2011 11:36:38
Endzeit: 31.05.2011 12:06:38
=Zeitbuchung 1800 (30Minuten)

Du kannst es mathetisch hin- und herwenden wie du wilst - wenn du "nur" die Differenz deiner "Endzeit minus Startzeit" in der Hand hast, dann sind es insgesamt 0 Jahre, 0 Monate, 0 Tage und ein büschen Kroppzeug seit Beginn von Access' Stund Null. Also bekämst du ohne die Korrektur oben wieder den 30.12.1899 00h30 angezeigt... bzw, den Tag 30.

Du kannst natürlich auch, wenn du dein Access schonen möchtest, auch selbst aus 1800 und geteilt durch 60 und Modulo 60 umrechnen in Stunden und Minuten.
Dann musst du eben Stunden, Minuten und Sekunden selbst berechnen, als jeweils zweistelligen String formatieren mit Anzeige eventueller führenden Nullen.

Aber wenn du doch die Sekundendifferenz schon als 1800 in der Hand hast, dann kannst du doch diese einzige Veränderliche in der Miniformel einfach reinfallen lassen... so what?

Gibt es vielleicht eine einfachere Methode, mit der ich einfach mithilfe von zwei Datumwerten die Zeitdauer berechnen lassen kann?
Kann sein... bestimmt.... aber ich kenne sie nicht.
Musst du noch ein wenig auf die Spezialisten warten.

Freundliche Grüße
Ebendiese zurück
Biber