PDA

Vollständige Version anzeigen : Stunden dezimal umrechnen


wirdnix
03.08.2005, 20:29
Hallo nochmal,

wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht, tippe mir den Finger auf dem Taschenrechner wund:

wie rechne ich denn Stunden dezimal aus einem Textfeld um, also z.B.

2 Stunden 45 Minuten (Zeit, kurz, 02:45) = 2,75 Stunden (Festkommazahl)???

rapunzel
03.08.2005, 20:40
Formel: [DeineZeit]*60*24/60

wirdnix
03.08.2005, 20:54
Hallo Brigitte!

Also irgendwie funzt das nicht, ich berechne die Stunden zunächst mit

Me.StundenSollVorgabe = Format([TerminStart] - 1 - [TerminEnde], "Short Time")

und bekomme dann sauber meine Stunden, z.B. von 08:00 bis 10:30 = 02:30 usw.

Aber statt 02:30 brauche ich nun für die Auszahlung 2,50. Mit Deiner Formel bekomme ich nur den schnöden #Fehler !!! Wie geht's noch??

Danke!

jens05
03.08.2005, 21:32
Hallo,
vielleicht so

Me!StundenSollvorgabe = ([TerminEnde] - [TerminStart]) * 60 * 24 / 60

rapunzel
03.08.2005, 21:49
Hallo Daniel,

warum berechnest Du nicht die Stundendifferenz gleich direkt im Textfeld und gehst den Umweg über VBA (wenn ich das richtig sehe)?
Das ganze dürfte doch komplizierter aufgebaut sein, als es Dein Eingangsposting vermuten ließ. Sorry, da kann ich nicht mit.
Aber such mal im Forum unter "TimeToMins", da gabs mal ein nettes Tool, leider weiß ich nicht mehr , von wem und wo ich's gelesen habe.


@jens: dann hat er aber nur mehr die Dezimalanzeige :p

jens05
03.08.2005, 21:55
Hallo Brigitte (auch mal wieder da),

so stands im Beitrag : Aber statt 02:30 brauche 2,50 :D

wirdnix
03.08.2005, 22:06
@ ihr beide!

nett daß ihr Euch so sorgt! Habe es vorher ähnlich wie von Jens vorgeschlagen und auch mit DateDiff ("n"; usw.) gemacht, Problem waren die Nachtschichten, also über Mitternacht, da wurden die Stunden falsch und negativ angezeigt.

So klappt es jetzt auch prima über 24.00 Uhr, also muß es doch eine einfache Umbruchformel geben? Ich dachte das wäre kalter Kaffee für die Profis??

Also wie geht's nun? Danke für die Hilfe!!!

Arne Dieckmann
03.08.2005, 22:36
Mit diesen Daten

TerminStart;TerminEnde
08:00;10:30
20:00;06:00

erhält man mit dieser Anweisung:
If Me!TerminEnde < Me!TerminStart Then
Me!StundenSollvorgabe = DateDiff("n", Me!TerminStart, Me!TerminEnde + 1) / 60
Else
Me!StundenSollvorgabe = DateDiff("n", Me!TerminStart, Me!TerminEnde) / 60
End If
für den ersten Fall 2,5 Stunden, im zweiten Fall 10 Stunden.

wirdnix
03.08.2005, 22:53
Genau so ist es - und genau so brauche ich es! So kann man z.B. auch von 10.25 bis 12.55 Termine machen und die Arbeitszeit passt!

Vielen Dank und gute Nacht!!!

Markus Nbg
23.12.2017, 18:28
ich weiss uraltes Thema aber über die Suche bin ich hier gelandet.

wende ich das an

If Me!TerminEnde < Me!TerminStart Then
Me!StundenSollvorgabe = DateDiff("n", Me!TerminStart, Me!TerminEnde + 1) / 60
Else
Me!StundenSollvorgabe = DateDiff("n", Me!TerminStart, Me!TerminEnde) / 60
End If

bekomme ich in meinem Feld immer einen gerundeten Wert.

09:00 bis 12:30 ergibt bei mir 4 anstatt 3,5

wo liegt mein Problem?

gpswanderer
23.12.2017, 18:39
Hallo,
wird StundenSollvorgabe auch in der Tabelle gespeichert ?
Wenn ja, ist vermutlich der Datentyp des Feldes in der Tabelle falsch. Aber, das Feld zu speichern ist sowieso überflüssig.
Auf DateDiff kannst Du auch verzichten.
If Me!TerminEnde < Me!TerminStart Then
Me!StundenSollvorgabe = (Me!TerminStart - Me!TerminEnde + 1) * 24
Else
Me!StundenSollvorgabe = (Me!TerminStart - Me!TerminEnde) * 24
End If
Eventuell TerminEnde und TerminStart vertauschen.

Zeitdifferenzen sind von Hause aus schon eine Dezimalzahl. 0,5 sind 12 Stunden. 0,25 = 6 Stunden.
Multiplikation mit 24 ergibt dezimale Stunden
Multiplikation mit 1440 ergibt dezimale Minuten
Multiplikation mit 86400 ergibt dezimale Sekunden