Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Dezimalzahl umrechnen

Begonnen von Stapi, Februar 10, 2011, 21:51:10

⏪ vorheriges - nächstes ⏩

Stapi

Guten Abend

Ich muß eine Dezimalzahl per VBA umrechnen in Minuten. kleines Beispiel: 0,4 Stunden sind 24 Minuten. Wie kann ich das anstellen ???, hat jemad eine Tipp für mich.  :-[

Danke und Gruß

Stefan
Grüße aus dem schönen NRW
Stefan

DF6GL

Hallo


Dim dblStd as Double, lngMinuten as Long
dblStd = 0.4
lngMinuten = int(dblStd *60)
Msgbox lngMinuten
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Stapi

Hallo Franz

Du hast mich mal wieder begeistert, Danke dafür.
Darf ich dir noch eine Frage nachreichen?
Ich gebe die Anfangsuhrzeit als Dezimal ein z.b 6,20 nun möchte ich daraus die Minuten errechnen die Arbeitsstunden dargestellt in z.b 4,40 in Minuten (264)  nach deine Code hinzuzählen und dann das Arbeitsende als Dezimal 10,33 wieder ausgeben.
Dein Code funktoniert aber für mich Nachvollziehen kann ich ihn nicht wie die Dezimalzahl umgerechnet wird. Kannst du mir das in kurzen Worten erklären? Danke

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

MzKlMu

#3
Hallo,
ich kann die Probleme die Du hast zur Errechnung dezimaler Zeiten hast, nicht ganz nachvollziehen.
Eine Stunde hat 60 Minuten, demzufolge sind 0,1 dezimale Stunden 6 Minuten. (60*0,1).
4,4 Stunden = 4,4*60=264 Minuten.

Auch in Deiner Beispielrechnung ist ein Fehler drin.

6,2 Stunden = 372 Minuten
4,4 Stunden = 264 Minuten
---------------------------
10,6 Stunden = 636 Minuten = 10,6 Stunden und nicht 10,33

Warum machst Du es Dir so kompliziert, warum willst Du überhaupt dezimale Zeiten?

06:12 + 04:24 = 10:36

So kannst Du auch mit der Zeit rechnen.
Erfasse die Zeiten im ganz normalen Zeitformat, bzw. was stört Dich daran?


Gruß Klaus

Stapi

Hallo MzKIMU

Dein Ansatz habe ich ehrlich nicht bedacht, die Grundlage der Zeiterfassung kommt aus einer Excel Tabelle dort wurde die Anfangszeit    6,20 Uhr dargestellt, die habe ich übernommen ist aber für mich nicht zwingend erforderlich die Arbeitsstunden werden aber z.b 4,4 Stunden (0,1 = 6 Minuten) eingegeben = 264 Minuten oder 4 Stunden 24 Minuten.
Ergebnis: 6,20 Uhr + 4:24 = 10,44 Uhr

Danke für den Hinweiß

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

MzKlMu

#5
Hallo,
irgendwie bringst Du gerade alles durcheinander. Du kannst doch 2 verschiedenen Zeitformate nicht einfach mischen.
ZitatErgebnis: 6,20 Uhr + 4:24 = 10,44 Uhr
Das ist falsch, entweder:
6,20 + 4,40 = 10,60=10:36
oder 6:12 + 4:24 = 10:36=10,60

Oder Du rechnest mit Minuten:
372 + 264 = 636 = 10:36 oder 10,60

Das mit den Minuten nur zur Verdeutlichung, nicht wirklich verwenden.

Das ganze wird komplizierter, wenn es über die Datumsgrenze (0:00 Uhr) geht, oder Zeiten über 24h ins Spiel kommen.
Daher solltest Du Dir die ganzen Zusammenhänge zwischen dezimalem Zeitformat und normalem Zeitformat mal sorgfältig klar machen.
Gruß Klaus

Stapi

Guten Morgen MzKIu

Ich bringe nichts durcheinander 6,20 oder 6:20 UHR ist meine Anfangsuhrzeit dazu werden die 4,4 Stunden = 4 Stunden 24 Minuten hin zuaddiert, da ergibt eine Enduhrzeit von 10,44 oder 10:44 Uhr

Zitat von: MzKlMu am Februar 12, 2011, 09:10:59
Zitat
Das ganze wird komplizierter, wenn es über die Datumsgrenze (0:00 Uhr) geht, oder Zeiten über 24h ins Spiel kommen.
Dem bin ich mir bewust, da her ist mein Ansatz gewesen mit Miuten zu rechnen, so könnte ich per VBA versuchen das zu berücksichtigen.

Die Datumsgrenze spielt  in dem Fall keine Rolle 

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

MzKlMu

Hallo,
ZitatIch bringe nichts durcheinander 6,20 oder 6:20
Doch, ziemlich heftig sogar.
6,20 ist nicht 6:20 sondern 6:12 und 6:12 + 4:24 ist 10:36 und nicht 10:44

6,20 und 6:20 sind 2 verschiedene Werte.

6,20 = 6:12
6:20 = 6,3333333
Gruß Klaus

Stapi

Hallo MzKIMu

Bitte wie ich die Anfangsuhrzeit darstellen werde, könnte 6,20 Uhr oder 6:20 Uhr sein, welches Fromat ist aktuell offen ich kann und möchte es davon abhängig machen mit welchen Format ich besser weiter rechnen kann.

Fakt ist nur das die Stunden 4,4 Stunden = 4 Stunden 24 Minuten zu der Anfangszeit hin zu addiert werden muß.

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

MzKlMu

Hallo,
alles sehr verworren.
Wenn Du Zeiten addieren willst, müssen alle Angaben ein einheitliches Format haben, entweder dezimal oder Zeit (hh:mm).
Wenn das nicht so ist, muss vorher umgerechnet werden.
Und diese Rechnung:
Zitat6,20 Uhr + 4:24 = 10,44 Uhr
ist definitv falsch, falscher geht es gar nicht.
ZitatFakt ist nur das die Stunden 4,4 Stunden = 4 Stunden 24 Minuten zu der Anfangszeit hin zu addiert werden muß.
Und die Anfangszeit ist das Problem, Du musst wissen welches Format die hat.
Gruß Klaus

Stapi

Hallo MzKIMu

Hab lange gebraucht bis das erreicht habe, aber die Funktion ist nun so wie ich sie benötige.

Function ZeitInMinuten(Zeit As Date) As Integer
Dim dbGStd As Double
Dim EngMinuten, GngMinuten, intMin As Integer
dbGStd = Forms!Spesen!Gesamtstunden
GngMinuten = Int(dbGStd * 60)
ZeitInMinuten = Zeit * 24 * 60
EngMinuten = ZeitInMinuten + GngMinuten
intMin = EngMinuten
Call MinutenInStd(intMin)
End Function

Function MinutenInStd(intMin As Integer) As Date
MinutenInStd = intMin / 24 / 60
Forms!Spesen!Arbeitsende = MinutenInStd
Debug.Print Forms!Spesen!Arbeitsende
End Function

Zur Erklärung der Arbeitsbeginn wird nun 06:20 Uhr (Format Zeit 24h) zerlegt in Minuten die Gesamtzeit Dargestellt als Dezimal 4,4 Stunden = 4 Stunden 24 Minuten löse ich auch in Minuten auf Addiere beide Minuten Werte zusammen und Wandel sie wieder in ein gültiges Format (Zeit 24h) 10:44 Uhr um.



Gruß Stefan
Grüße aus dem schönen NRW
Stefan

MzKlMu

Hallo,
beide Funktionen sind schlicht und ergreifend überflüssig. Das kann eine kleine Formel als Steuerelementinhalt ratz fatz.
=[Arbeitsbeginn]+[Gesamtzeit]/24
Das Feld Arbeitsbeginn und das Ausgabefeld sind als "Zeit, 24Std" zu formatieren. Das Feld mit der Gesamtzeit braucht keine Formatierung (kann aber als Kommazahl), muss aber vom Datentyp Double sein.
Du kannst das auch in einer Abfrage rechnen.

Als Beweis habe ich Dir ein Beispiel angehängt.

[Anhang gelöscht durch Administrator]
Gruß Klaus