MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Archive > Microsoft Access - Archiv > Microsoft Access - Archiv (2000)
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 11.06.2001, 09:52   #1
Günther Kramer
MS-Office-Forum Team MS-Office-Forum Team
Standard TIPP: Zeitberechnung mit mehr als 24 Stunden

Zeitberechnung mit mehr als 24 Stunden
Versionen: Access 97 und 2000
---------------------------------
Dies ist keine Frage, sondern eine kleine Hilfestellung.
Hatte tagelang PC-Ausfall, auch eine Anfrage per MAIL zum Problem der Zeitberechnung. Mail ist gelöscht- daher diese Hilfestellung -
---------------------------------
Access besitzt kein eingebautes Format, mit dem sich Zeiten von mehr als 24 Stunden darstellen ließen. Wenn Sie zum Beispiel die verstrichene Zeit von 8 Uhr morgens bis 9 Uhr morgens am nächsten Tag berechnen wollen, können Sie die Zeitangaben nicht einfach subtrahieren. Die Differenz würde Access im Zeitformat als "1:00" und nicht als "25:00" darstellen.
Um dennoch die korrekte Dauer auszugeben, müssen Sie die Zeitdifferenz mit der DatDiff-Funktion ermitteln. Damit erhalten Sie die Gesamtdauer in Minuten, und durch ganzzahlige Divisionen kommen Sie von diesem Wert auf die entsprechenden Stunden- und Minutenanteile. Das folgende Beispiel demonstriert die Vorgehensweise:

Beginnen Sie mit einer Tabelle, in der Sie Anfangs- und Endzeiten festhalten. Für eine möglichst fehlerfreie Erfassung empfiehlt sich der Einsatz von getrennten Datums- und Uhrzeitfeldern, so daß sich die Tabelle aus insgesamt vier Feldern zusammensetzt:


Feld Anfangsdatum: Datentyp "Datum/Uhrzeit", Format "Datum, lang"

Feld Anfangszeit: Datentyp "Datum/Uhrzeit", Format "Zeit, 24Std."

Feld Enddatum: Datentyp "Datum/Uhrzeit", Format "Datum, lang"

Feld Endzeit: Datentyp "Datum/Uhrzeit", Format "Zeit, 24Std."

Zur Berechnung der Zeitdifferenz setzen Sie eine Abfrage ein, der Sie die eben erstellte Tabelle hinzufügen. In den Abfrageentwurf übernehmen Sie alle vier Felder. In die nächste Spalte des Entwurfs geben Sie ein berechnetes Feld ein, das die Gesamtminuten ermittelt:

Gesamtminuten: DatDiff("n";[Anfangsdatum]+
[Anfangszeit];[Enddatum]+[Endzeit])

Mit dem Parameter "n" liefert die DatDiff-Funktion die Zeitdifferenz in Minuten. Die exakten Anfangs- und Endzeiten erhalten Sie durch die Addition der Datums- und Uhrzeitbestandteile. Für die Zeitspanne von 8:00 bis 9:00 am Folgetag berechnet die Funktion zum Beispiel einen Wert von "1500" (Minuten). Diese Gesamtdauer eignet sich übrigens sehr gut zur Addition mehrerer Zeitdifferenzen.

Um nun aber die Spanne im gewünschten Stunden- und Minutenformat auszugeben, fügen Sie dem Abfrageentwurf ein weiteres berechnetes Feld hinzu. Konkret geben Sie in die nächste Spalte folgenden Ausdruck ein:

Gesamtzeit: [Gesamtminuten]\60 & ":" &
Format([Gesamtminuten] Mod 60;"00")

Die Formel greift auf das Ergebnis des ersten berechneten Feldes, "Gesamtminuten", zurück. Der Operator "\" führt eine ganzzahlige Division durch, so daß Sie mit dem Divisor "60" den Anteil an vollen Stunden erhalten. Demgegenüber ermitteln Sie im Rahmen des Format-Ausdrucks den Modulo, also den Rest der ganzzahligen Division. Das entspricht den Minuten, die in der angebrochenen letzten Stunde verbleiben. Die Format-Funktion dient lediglich dazu, das Ergebnis immer zweistellig auszugeben. Schließlich verketten Sie die beiden Formelergebnisse mit "&"-Operatoren, wobei Sie einen Doppelpunkt als Trennzeichen zwischen Stunden- und Minutenanteil einfügen.

So lautet das Ergebnis des berechneten Feldes "25:00", wenn Sie wieder das Beispiel von 8:00 bis 9:00 am Folgetag zugrunde legen.

Da es sich bei dem formatierten Zeitausdruck jedoch um einen Textwert handelt, können Sie mit ihm keine weiteren Berechnungen anstellen, - beispielsweise um die Gesamtzeiten zu addieren. Wenn Sie wirklich mit Stunden und Minuten rechnen wollen, müssen Sie zwei weitere Felder in die Abfrage einfügen. So läßt sich dann der Stundenanteil in folgendem berechneten Feld ermitteln:

Stundenanteil: DatDiff("h";[Anfangsdatum]+
[Anfangszeit]; [Enddatum]+[Endzeit])

Der Ausdruck ist nahezu identisch mit der DatDiff-Funktion für die Gesamtminuten, nur daß Sie dieses Mal den Parameter "h" einsetzen.

Für den Minutenanteil ergänzen Sie die Abfrage um folgendes Feld:

Minutenanteil: DatDiff("n";[Anfangsdatum]+
[Anfangszeit]; [Enddatum]+[Endzeit]) Mod 60

Da Sie nicht die Gesamtdauer in Minuten berechnen wollen, sondern nur die Minuten nach der letzten vollen Stunde, errechnen Sie mit "Mod 60" den Rest der ganzzahligen Division von Gesamtminuten durch 60. Am besten weisen Sie dem Feld anschließend noch das Format "00" zu, indem Sie es im Abfrageentwurf mit der rechten Maustaste anklicken und über den Kontextmenübefehl Eigenschaften das Format "00" eingeben.

Die Felder "Stundenanteil" und "Minutenanteil" enthalten Zahlenwerte, mit denen Sie beliebige Berechnungen anstellen können.

[Beitrag von elmar
- Wurde noch einmal von Günther Kramer bereit gestellt]

__________________

Gruß, Günther


Tools und Lösungen für Microsoft Access
Günther Kramer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.