Discussion:
Uhrzeiten runden
(zu alt für eine Antwort)
Andreas Engwer
2005-07-08 09:49:45 UTC
Permalink
Hallo,

gibt es eine Anweisung, mit der man eine Uhrzeit auf bzw abrunden kann?
Bsp.: ein Kunde kommt 7:45 (dies wird mit Datum[] und Uhrzeit[]) zum
Check-In aber die Datenbank soll ihn für 8:00 Uhr buchen. Es soll jeweils
auf die halbe oder ganze Stunde gerundet werden.
Dies soll äquivalent beim Check-Out mittels Abrunden passieren.

Vielen Dank im Voraus

MfG

Andreas Engwer
Andreas Schlueter
2005-07-08 10:21:02 UTC
Permalink
Hallo Andreas:

versuch mal
TimeSerial(Hour(pNow), Round(Minute(pNow) / 15, 0) * 15, 0)
für ViertelstundenRundung...

Gruß,
Andreas
Andreas Schlueter
2005-07-08 10:23:03 UTC
Permalink
Sorry - natürlich:

TimeSerial(Hour(Now), Round(Minute(Now) / 15, 0) * 15, 0)

wenn du das mit der der aktuellen Zeit probieren willst

Gruß
Andreas
Michael Alexander
2005-07-08 10:28:10 UTC
Permalink
Hallo Andreas!

Google mal...
http://groups.google.com/groups?q=uhrzeiten+runden&hl=de&lr=&ie=UTF-8&selm=d
5q9sl%24ch1%2401%241%40news.t-online.com&rnum=1

Gruß
Michael
Post by Andreas Engwer
Hallo,
gibt es eine Anweisung, mit der man eine Uhrzeit auf bzw abrunden kann?
Bsp.: ein Kunde kommt 7:45 (dies wird mit Datum[] und Uhrzeit[]) zum
Check-In aber die Datenbank soll ihn für 8:00 Uhr buchen. Es soll jeweils
auf die halbe oder ganze Stunde gerundet werden.
Dies soll äquivalent beim Check-Out mittels Abrunden passieren.
Vielen Dank im Voraus
MfG
Andreas Engwer
Ralf Schmidt
2005-07-08 11:03:16 UTC
Permalink
Post by Andreas Engwer
gibt es eine Anweisung, mit der man eine Uhrzeit auf bzw abrunden kann?
Bsp.: ein Kunde kommt 7:45 (dies wird mit Datum[] und Uhrzeit[]) zum
Check-In aber die Datenbank soll ihn für 8:00 Uhr buchen. Es soll jeweils
auf die halbe oder ganze Stunde gerundet werden.
Dies soll äquivalent beim Check-Out mittels Abrunden passieren.
Anweisung wüßte ich jetzt keine, aber mit einer Funktion in VBA ...

z.B.

***************************************************
Function Aufrunden(Uhrzeit As Date) As Date

If DatePart("n", Uhrzeit) > 30 Then
Aufrunden = DatePart("h", Uhrzeit) + 1 & ":00"
Else
If DatePart("n", Uhrzeit) > 0 Then
Aufrunden = DatePart("h", Uhrzeit) & ":30"
Else
Aufrunden = Uhrzeit
End If
End If

End Function
***************************************************

und ...

***************************************************
Function Abrunden(Uhrzeit As Date) As Date

If DatePart("n", Uhrzeit) < 30 Then
Abrunden = DatePart("h", Uhrzeit) & ":00"
Else
Abrunden = DatePart("h", Uhrzeit) & ":30"
End If

End Function
***************************************************
Doerthe Weber
2005-07-08 17:59:48 UTC
Permalink
Hallo Andreas,
Post by Andreas Engwer
Hallo,
gibt es eine Anweisung, mit der man eine Uhrzeit auf bzw abrunden kann?
Bsp.: ein Kunde kommt 7:45 (dies wird mit Datum[] und Uhrzeit[]) zum
Check-In aber die Datenbank soll ihn für 8:00 Uhr buchen. Es soll jeweils
auf die halbe oder ganze Stunde gerundet werden.
Dies soll äquivalent beim Check-Out mittels Abrunden passieren.
Das ist ein Kandidat für ganzzahlige Division ohne Rest (\)...

abrunden:
Zeitseriell(Stunde([DeineUhrzeit]);(Minute([DeineUhrzeit])\30)*30;0)

aufrunden:
Zeitseriell(Stunde([DeineUhrzeit]);((Minute([DeineUhrzeit])+29)\30)*30;0)

Gruß
Doerthe
Ralf Schmidt
2005-07-09 11:55:14 UTC
Permalink
Post by Doerthe Weber
Zeitseriell(Stunde([DeineUhrzeit]);((Minute([DeineUhrzeit])+29)\30)*30;0)
Uhrzeiten zwischen 23:31 und 23:59 bringen hiermit als Ergebnis #31.12.1899#.
Allerdings bezweifle ich das um diese Uhrzeit noch ein Kunde in
die Bank kommt ;-)
Peter Doering
2005-07-09 15:23:04 UTC
Permalink
Hallo,
Post by Ralf Schmidt
Post by Doerthe Weber
Zeitseriell(Stunde([DeineUhrzeit]);((Minute([DeineUhrzeit])+29)\30)*30;0)
Uhrzeiten zwischen 23:31 und 23:59 bringen hiermit als Ergebnis #31.12.1899#.
Jo, so wie alle Zeiten bis 23:59 Uhr den #30.12.1899# ergeben, naemlich Tag
0 nach Access-Zeitrechnung.
Post by Ralf Schmidt
Allerdings bezweifle ich das um diese Uhrzeit noch ein Kunde in
die Bank kommt ;-)
Es kommen all diejenigen, die vom Geldautomaten mehr als ihr Limit abheben
wollen. ;-)

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Doerthe Weber
2005-07-09 18:39:23 UTC
Permalink
Hallo Ralf,
Post by Ralf Schmidt
Post by Doerthe Weber
Zeitseriell(Stunde([DeineUhrzeit]);((Minute([DeineUhrzeit])+29)\30)*30;0)
Uhrzeiten zwischen 23:31 und 23:59 bringen hiermit als Ergebnis #31.12.1899#.
Allerdings bezweifle ich das um diese Uhrzeit noch ein Kunde in
die Bank kommt ;-)
Sein doch nicht so pingelig ;-)
Der Effekt ist mir jetzt wirklich was Neues, ich benutze das Ergebnis
nämlich immer nur formatiert.
Wenn Du darauf mal ganz schlicht noch ein timevalue anwendest (oder
sonstwie formatierst) wirst Du bemerken, dass da trotzdem genau Deine
gewünschte Uhrzeit geliefert wird...

Gruß
Doerthe
Ralf Schmidt
2005-07-10 09:25:48 UTC
Permalink
Post by Doerthe Weber
Wenn Du darauf mal ganz schlicht noch ein timevalue anwendest (oder
sonstwie formatierst) wirst Du bemerken, dass da trotzdem genau Deine
gewünschte Uhrzeit geliefert wird...
Ja natürlich.

Aber was mir jetzt auch aufgefallen ist das hier oft deutsche
Begriffe verwendet werden wie in diesem Fall 'Zeitseriell'
oder 'Stunde' anstatt 'TimeSerial' und 'Hour'.
Die deutschen Begriffe werden bei mir aber nicht erkannt.
Was muß man für ein Office haben das die gehen?
Thomas Möller
2005-07-10 09:33:40 UTC
Permalink
Hallo Ralf,
Post by Ralf Schmidt
Post by Doerthe Weber
Wenn Du darauf mal ganz schlicht noch ein timevalue anwendest (oder
sonstwie formatierst) wirst Du bemerken, dass da trotzdem genau Deine
gewünschte Uhrzeit geliefert wird...
Aber was mir jetzt auch aufgefallen ist das hier oft deutsche
Begriffe verwendet werden wie in diesem Fall 'Zeitseriell'
oder 'Stunde' anstatt 'TimeSerial' und 'Hour'.
Die deutschen Begriffe werden bei mir aber nicht erkannt.
Was muß man für ein Office haben das die gehen?
ich persönlich habe die Erfahrung gemacht, dass man am besten die
englischsprachigen Begriffe verwendet. Dann hat man kein Problem mit der
Übersetzung.

CU
--
Thomas

Homepage: www.Team-Moeller.de

TM-AbhängigeObjekte: Update auf Version 3.76 (seit 02.07.05)
Ermittelte Abhängigkeiten können jetzt als Datei exportiert werden.
Michel Fouquet
2005-07-10 10:31:58 UTC
Permalink
Hallo,
Post by Ralf Schmidt
Aber was mir jetzt auch aufgefallen ist das hier oft deutsche
Begriffe verwendet werden wie in diesem Fall 'Zeitseriell'
oder 'Stunde' anstatt 'TimeSerial' und 'Hour'.
Die deutschen Begriffe werden bei mir aber nicht erkannt.
Was muß man für ein Office haben das die gehen?
da es sich hier um eine deutschsprachige NG handelt, werden wohl die
meisten auch eine deutschspachige Version des Office-Paketes verwenden.

Die deutschen Begriffe werden im GUI verwendet (also der
Bedienoberfläche) wie z.B. dem Abfrageeditor. Man kann dort allerdings
auch die englischen Begriffe verwenden, die allerdings bei der Anzeige
in die deutschen Begriffe übersetzt werden. Etwas verwirrend: im
SQL-Statement wird der englische Begriff verwendet.

Die englischen Begriffe - und nur diese - werden im VBA-Editor verwendet.

(Weitere Unterscheidungen in dieser Hinsicht ist z.B. das sog.
"Argumenttrennzeichen").

Da im OP nicht angegeben war, ob das Runden im Code, im Abfrageeditor
oder in der Zuweisung in einem Textfeld erfolgen soll, sind im
nachfolgenden Thread eben diese beiden Ansätze durcheinandergepurzelt.

mfg,
Michel
Ralf Schmidt
2005-07-10 11:33:24 UTC
Permalink
Post by Michel Fouquet
da es sich hier um eine deutschsprachige NG handelt, werden wohl die
meisten auch eine deutschspachige Version des Office-Paketes verwenden.
Benutze auch die deutsche Variante. Aber trotzdem ...
Post by Michel Fouquet
Die deutschen Begriffe werden im GUI verwendet (also der
Bedienoberfläche) wie z.B. dem Abfrageeditor. Man kann dort allerdings
auch die englischen Begriffe verwenden, die allerdings bei der Anzeige
in die deutschen Begriffe übersetzt werden. Etwas verwirrend: im
SQL-Statement wird der englische Begriff verwendet.
Ist mir natürlich auch schon aufgefallen.
Post by Michel Fouquet
Die englischen Begriffe - und nur diese - werden im VBA-Editor verwendet.
Genau, davon bin ich die ganze Zeit ausgegangen.
Deswegen haben mich die Deutschen irgendwie verwirrt.
Post by Michel Fouquet
(Weitere Unterscheidungen in dieser Hinsicht ist z.B. das sog.
"Argumenttrennzeichen").
Da im OP nicht angegeben war, ob das Runden im Code, im Abfrageeditor
oder in der Zuweisung in einem Textfeld erfolgen soll, sind im
nachfolgenden Thread eben diese beiden Ansätze durcheinandergepurzelt.
Das wird es wohl sein.

Danke für die Erklärung, damit ist die (Office)Welt bei mir
wieder in Ordnung :-)

Loading...