Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat
zurück: Tabelle als Unterformular, verknüpfen mit Kombinationsfeld weiter: Progressbar bei Tabellenerstellungsabfrage Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
ExUserCel
Im Profil kannst Du frei den Rang ändern


Verfasst am:
14. Jun 2013, 10:52
Rufname:

Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat - Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat

Nach oben
       Version: Office 2007

Hallo,

ich habe ein kleines Problem mit dem Rechnen von Uhrzeiten (die nicht im Format Uhrzeiten sind).

Zuerst erkläre ich mal, wieso ich die Uhrzeiten nicht mit dem Format Uhrzeit belegt habe.
Ich möchte die Uhrzeiten in einem Auswahlfeld aufführen, was mit dem Uhrzeitformat nicht möglich ist und außerdem wird bei der Uhrzeit dann immer das Datum mitgespeichert.

So, nun zum Problem. Ich habe alle Uhrzeiten von 00:00 Uhr bis 23:59 Uhr in einer Tabelle "tblZeit" abgelegt. Die Uhrzeiten sind in folgender Form in der Tabelle vorhanden: 00:15 z.B. ist 15 oder 15:10 ist 1510 (das Format wird nur später 00/:00)

Wenn ich nun die Differenz zwischen 02:59 und 03:01 errechnen möchte, dann bekomme ich den Wert 43 raus, was ja logisch ist denn 301-259 ergibt ja 42.

Wie bringe ich Access nun bei, dass die Zahl 259 die Uhrzeit 02:59 ist ohne das Format zu ändern?

Ich habe da an eine Funktion gedacht, aber ich bekomme das mit den Argumenten nicht hin...
KlausMz
Moderator Access


Verfasst am:
14. Jun 2013, 11:11
Rufname:
Wohnort: Irgendwo in der Pfalz


AW: Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat - AW: Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat

Nach oben
       Version: Office 2007

Hallo,
Zitat:
Ich möchte die Uhrzeiten in einem Auswahlfeld aufführen, was mit dem Uhrzeitformat nicht möglich ist und außerdem wird bei der Uhrzeit dann immer das Datum mitgespeichert.
beide Aussagen stimmen nicht. Du kannst ie Uhrzeit auch in einem Auswahlfeld anzeigen. Und eine Zeit speichert auch kein Datum, wie kommst Du darauf?
_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
ExUserCel
Im Profil kannst Du frei den Rang ändern


Verfasst am:
14. Jun 2013, 12:32
Rufname:

AW: Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat - AW: Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat

Nach oben
       Version: Office 2007

ExUserCel am 14. Jun 2013 um 11:42 hat folgendes geschrieben:
Stimmt, tut mir Leid!

Das war eine Sache der Formatierung in der Tabelle, das klappt jetzt auch mit der Berechnung usw.
Aber ich kann leider immer noch kein Nachschlagfeld für das Zeitfeld auswählen.
Bei mir kommt immer eine Fehlermeldung:
Zitat:
Der Nachschlage-Assistent kann auf Felder dieses Datentyps nicht angewendet werden.

Na gut, ich muss gestehen ich hab es jetzt hinbekommen...
Ich habe es jetzt so gelöst:
Ich habe nun zwei Datumsfelder (Starttag und Endtag) und zwei Zeitfelder (Startzeit und Endzeit). In einer Abfrage rechne ich die beiden zusammen und kann so die Differenz errechnen.

Das klappt mit Zeitunterschieden bis zu 24 Stunden auch prima, aber danach rechnet er einfach von vorne..
Z.B. Zeitunterschied zwischen: 13.06.13 15:00 und 14.06.13 18:30, dann bekomme ich 03:00 raus, obwohl es ja eigentlich 27 Stunden Unterschied sind.

Wie kann ich das berücksichtigen?
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
14. Jun 2013, 14:46
Rufname:

AW: Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat - AW: Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat

Nach oben
       Version: Office 2007

Hallo,

kleine Korrektur:Ein Feld vom Type DatumZeit speichert IMMER ein Datum UND eine Uhrzeit, dagegen kann man gar nichts machen.

Es ist lediglich so, das bei einem Feld mit FORMAT Datum der Uhrzeitteil unterdrückt wird, indem 0:00 Uhr verwendet wird und bei einem Feld mit FORMAT Zeit der Datumsteil unterdrückt wird, der dann IMMER 30.12.1899 ist (bei Access das Initialdatum).

Das liegt daran, daß ein Feld vom Typ Datum/Zeit in Wirklichkeit als Dezimalzahl gespeichert wird, bei dem der Vorkommateil das Datum und der Nachkommateil die Zeit darstellt.
Wenn man z.B. für das aktuelle Datum und die Uhrzeit mal die interne Zahl sehen möchte, gibt man im VBA-Direktfenster einfach mal ein:
Code:
?CDbl(Now)
und erhält z.B.:
41439,6074074074
So sieht die Zahl aus, die Access in der Tabelle speichern würde.

Für Berechnungen mit Datum und Uhrzeit gibt es bereits reihenweise Funktionen wie DateDiff, DateAdd usw., von daher speichert man auch Datum und Zeit in genau EIN Feld, wenn man mit beidem rechnen will.

Die Präsentation im Formular ist eine ganz andere Sache und hat nicht zwangsläufig mit der Speicherungsform zu tun. Wenn man also unbedingt Komboboxen haben möchte, erstellt man einfach ungebundene Komboboxen, die ihren Wert entweder per VBA oder mit einem Ausdruck (wenn es ein Endlosformular ist) aus dem eigentlichen Datumsfeld berechnen. Für die Eingabe ist ein Ausdruck natürlich ungeeignet.

Beispielsweise verwendet man in Form_Current Code wie diesen:
Code:
    Me.cmbJahr = Year(MeinDatumsfeld)
    Me.cmbMonth = Month(MeinDatumsfeld)
    Me.cmbDay = Day(MeinDatumsfeld)
usw. für die Uhrzeit.

Damit werden beim Anzeigen jeder Zeile die Komboboxen entsprechend gesetzt (in einem Einzelformular). Wird eine Eingabe getätigt, muß man im "AfterUpdate"-Event der jeweiligen Kombobox die Werte wieder in ein Datum /eine Zeit umrechnen und beides gemeinsam in das eigentliche Feld schreiben. Am Ende hat man ein Datums/Zeitfeld, mit dem man dann auch einfache Berechnungen in SQL anwenden kann.

Gruß

Christian

PS.: Hier ein Beispielcode aus dem Formular "frmCCExtInp_DateTimeInput":
Code:
Private Sub ReturnValue()
    Dim strDateValue As String

    Select Case prv_enmDateTimeType
      Case enmExtInput_DateTimeType_TimeOnly
        If Not IsNull(Me.ctlHour) And Not IsNull(Me.ctlMinute) And _
           Not IsNull(Me.ctlSecond) Then
            strDateValue = Me.ctlHour & ":" & Me.ctlMinute & ":" _
                         & Me.ctlSecond
            If CDate(strDateValue) < Me.MinDate Then
                Me.ctlHour = Hour(Me.MinDate)
                Me.ctlMinute = Minute(Me.MinDate)
                Me.ctlSecond = Second(Me.MinDate)
            End If
            If CDate(strDateValue) > Me.MaxDate And CDbl(Me.MaxDate) > 0 Then
                Me.ctlHour = Hour(Me.MaxDate)
                Me.ctlMinute = Minute(Me.MaxDate)
                Me.ctlSecond = Second(Me.MaxDate)
            End If
            prv_objInputCtl = CDate(Me.ctlHour & ":" & Me.ctlMinute & ":" _
                                  & Me.ctlSecond)
        End If
      Case enmExtInput_DateTimeType_DateOnly
        If Not IsNull(Me.ctlDay) And Not IsNull(Me.ctlMonth) And _
           Not IsNull(Me.ctlYear) Then
            strDateValue = Me.ctlYear & "/" & Me.ctlMonth & "/" & Me.ctlDay & " "
            If CDate(strDateValue) < Me.MinDate Then
                Me.ctlDay = Day(Me.MinDate)
                Me.ctlMonth = Month(Me.MinDate)
                Me.ctlYear = Year(Me.MinDate)
            End If
            If CDate(strDateValue) > Me.MaxDate And CDbl(Me.MaxDate) > 0 Then
                Me.ctlDay = Day(Me.MaxDate)
                Me.ctlMonth = Month(Me.MaxDate)
                Me.ctlYear = Year(Me.MaxDate)
            End If
            prv_objInputCtl = CDate(Me.ctlDay & "/" & Me.ctlMonth & "/" _
                                  & Me.ctlYear)
        End If
      Case enmExtInput_DateTimeType_DateAndTime
        If Not IsNull(Me.ctlHour) And Not IsNull(Me.ctlMinute) And _
           Not IsNull(Me.ctlSecond) And Not IsNull(Me.ctlDay) And _
           Not IsNull(Me.ctlMonth) And Not IsNull(Me.ctlYear) Then
            strDateValue = Me.ctlYear & "/" & Me.ctlMonth & "/" & Me.ctlDay _
                         & " " & Me.ctlHour & ":" & Me.ctlMinute & ":" _
                         & Me.ctlSecond
            If CDate(strDateValue) < Me.MinDate Then
                Me.ctlDay = Day(Me.MinDate)
                Me.ctlMonth = Month(Me.MinDate)
                Me.ctlYear = Year(Me.MinDate)
                Me.ctlHour = Hour(Me.MinDate)
                Me.ctlMinute = Minute(Me.MinDate)
                Me.ctlSecond = Second(Me.MinDate)
            End If
            If CDate(strDateValue) > Me.MaxDate And CDbl(Me.MaxDate) > 0 Then
                Me.ctlDay = Day(Me.MaxDate)
                Me.ctlMonth = Month(Me.MaxDate)
                Me.ctlYear = Year(Me.MaxDate)
                Me.ctlHour = Hour(Me.MaxDate)
                Me.ctlMinute = Minute(Me.MaxDate)
                Me.ctlSecond = Second(Me.MaxDate)
            End If
            prv_objInputCtl = CDate(Me.ctlDay & "/" & Me.ctlMonth & "/" _
                            & Me.ctlYear & " " & Me.ctlHour & ":" _
                            & Me.ctlMinute & ":" & Me.ctlSecond)
          Else
            If Not IsNull(Me.ctlDay) And Not IsNull(Me.ctlMonth) And _
               Not IsNull(Me.ctlYear) Then
                prv_objInputCtl = CDate(Me.ctlDay & "/" & Me.ctlMonth & "/" _
                                      & Me.ctlYear)
              Else
                prv_objInputCtl = CDate(Me.ctlHour & ":" & Me.ctlMinute & ":" _
                                      & Me.ctlSecond)
            End If
        End If
    End Select
End Sub
Das komplette Beispiel findest Du hier: Alternative Dateneingabe mit Popup-Formularen
Gast150313
passt scho'


Verfasst am:
14. Jun 2013, 18:33
Rufname:
Wohnort: Kurpfalz


AW: Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat - AW: Rechnen mit Uhrzeiten, aber nicht im Uhrzeitformat

Nach oben
       Version: Office XP (2002)

Ich versteh's nicht: einmal sagst du, du willst das Datum nicht berücksichtigen, dann wieder doch (dein Beispiel mit den 27 statt 3 Stunden). Dann "übersetzt" du 2:59 mit 259, was ganz tödlich ist, denn eine Stunde hat nicht, außer beim Militär (15:00 = "fünfzehn-hundert" ;) ) 100 Minuten. Außerdem kann man mit den Zeiten wie mit den Datumsangaben wunderbar rechnen, wie bitsqueezer schon schrieb, man muß nur berücksichtigen, daß die Zahl 1 nunmal 1 Tag ist, auf der Zeitskala mit Datumsangaben der 1.1.1900.

Ob man die Prozeduren von Bitsqeezer überhaupt braucht, überblicke ich jetzt nicht, aber du solltest ein wenig von dem Umfeld (das betr. Formular, irgendeine berechnende Abfrage o.ä.) mal hier reinstellen, dann würde man sehen, ob das ganze nicht fürchterlich einfach ist.

_________________
Besten Gruß

A. Friend
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Die Differenz zweier Uhrzeiten 17 Summerial 3076 05. Dez 2011, 12:40
JMalberg Die Differenz zweier Uhrzeiten
Keine neuen Beiträge Access Tabellen & Abfragen: Nur mit Zeiten rechnen grösser als 24h, zum Beispiel 100:15 9 holzhoechi 2323 08. Sep 2011, 22:00
OlliWirr Nur mit Zeiten rechnen grösser als 24h, zum Beispiel 100:15
Keine neuen Beiträge Access Tabellen & Abfragen: In Abfrage mit summierten Spalten rechnen 3 Werwolfli 402 30. Sep 2010, 09:46
Tom2002 In Abfrage mit summierten Spalten rechnen
Keine neuen Beiträge Access Tabellen & Abfragen: Rechnen in Access 2 Ellarena 1954 26. Mai 2010, 07:11
Willi Wipp Rechnen in Access
Keine neuen Beiträge Access Tabellen & Abfragen: Rechnen in Anfügeabfrage? 8 Gast 303 30. Jul 2009, 07:50
Gast Rechnen in Anfügeabfrage?
Keine neuen Beiträge Access Tabellen & Abfragen: Rechnen in Abfragen 5 maart 411 06. Jun 2009, 10:51
MiLie Rechnen in Abfragen
Keine neuen Beiträge Access Tabellen & Abfragen: Mit Potenz rechnen - wie möglich? 5 rantz 4184 14. Sep 2008, 20:12
Willi Wipp Mit Potenz rechnen - wie möglich?
Keine neuen Beiträge Access Tabellen & Abfragen: Ergebnis rechnen und in Tabelle Speichern 11 mmvector 613 25. Aug 2008, 19:48
Gast Ergebnis rechnen und in Tabelle Speichern
Keine neuen Beiträge Access Tabellen & Abfragen: Daten vergleichen + rechnen 1 Gast 406 19. Nov 2007, 17:24
Markos Daten vergleichen + rechnen
Keine neuen Beiträge Access Tabellen & Abfragen: Rechnen in Access Summe etc. 3 mbm1968 819 27. Jul 2007, 18:37
Nouba Rechnen in Access Summe etc.
Keine neuen Beiträge Access Tabellen & Abfragen: Dezimalzahl in Uhrzeitformat? 2 !sonne 2120 04. Jul 2007, 16:22
!sonne Dezimalzahl in Uhrzeitformat?
Keine neuen Beiträge Access Tabellen & Abfragen: Mit Daten rechnen 1 G 594 17. Apr 2007, 22:46
stpimi Mit Daten rechnen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel Tricks