Hallo!
Ich mochte ein einem Datenblatt Formular für Aufträge folgendes umsetzen
Felder:
Auftrag_Detais_Datum_Von Format Datum kurz
Auftrag_Detais_Von Format Uhrzeit
Auftrag_Detais_Datum_Bis Format Datum kurz
Auftrag_Detais_Bis Format Uhrzeit
Auftrag_Detais_Pause_Min Format zahl 2 Stellig für die Länge der Minuten
Das Auftrag_Detais_Dauer soll ein berechnetes Feld sein das die Dauer der Zeit als Dezimalzahl ausrechnet also 8,74 stunden z.b.
Für den Bericht/Rechnung oder auch Zeiterfassung/Mitarbeiter kann ich das genze dann in einer abfrage genauer zerlegen wie ich es dann brauche
Auftrag_Detais_Datum_Von 28.02.2015
Auftrag_Detais_Von 23:00:00
Auftrag_Detais_Datum_Bis 01.03.2015
Auftrag_Detais_Bis 01:00:00
Auftrag_Detais_Pause_Min 30
Auftrag_Detais_Dauer Berechnetes ergebniss ist dann -8,33333333284827E-02
mit der formel
([Auftrag_Detais_Datum_Von]+[Auftrag_Detais_Von])-([Auftrag_Detais_Datum_Bis]+[Auftrag_Detais_Bis])-Minute([Auftrag_Detais_Pause_Min])
Da komm ich nicht weiter
Gruß Frank
Hilfreich wäre ein besseres Verständnis zu Grundsätzliches und Zusammenfassendes über den Datum/Uhrzeit-Datentyp (http://www.ms-office-forum.net/forum/showthread.php?t=206125).
Kurz: DateTime-Werte sind intern Double-Zahlen. Dabei stellen die Ganzzahlanteile die Tage dar, die Dezimalanteile sind Bruchteile eines Tages:
Stunde ... 1/24
Minute ... 1/(24*60)
Daraus kannst Du dann notwendige Berechnungen ableiten.
Hallo,
weiterhin wäre noch zu beachten, dass unterschiedlich gerechnet werden muss, wenn bei der Ende Zeit ein Datumswechsel (Mitternacht) dabei ist.
Hallo!
Erstmals danke für die antworten aber ich muss sagen des kapier ich echt nicht
Ich hab aber das hier gefunden
http://www.access-im-unternehmen.de/605 (http://www.access-im-unternehmen.de/605)
ich hab das Feld nun so berechnet das Ergebnis ist auf dem Bild zu sehen und die Beispiels DB ist aber 2010
wenn ich nur das Anfangs Datum habe und kein End Datum dann müsste es ja so heißen
Wenn([Auftrag_Detais_Bis]-[Auftrag_Detais_Von]>0;[Auftrag_Detais_Bis]-[Auftrag_Detais_Von];[Auftrag_Detais_Bis]-[Auftrag_Detais_Von]+1)*24
Ich hab aber das End Datum auch mit erfasst um bei einem Monatsübergang das Ganze noch splitten zu können und wenn ich richtig liege muss ich ja nur das höhere Datum vom niedrigen abziehen und mal 24 nehmen
Die Anzahl der Stunden wird ja richtig angezeigt allerdings wenn die Zeit nur 1 min lang ist dann
ist der Wert über 1 und das ist ja falsch
Wenn(([Auftrag_Detais_Datum_Bis]+[Auftrag_Detais_Bis])-([Auftrag_Detais_Datum_Von]+[Auftrag_Detais_Von])>0;([Auftrag_Detais_Datum_Bis]+[Auftrag_Detais_Bis])-([Auftrag_Detais_Datum_Von]+[Auftrag_Detais_Von]);([Auftrag_Detais_Datum_Bis]+[Auftrag_Detais_Bis])-([Auftrag_Detais_Datum_Von]+[Auftrag_Detais_Von])+1)*24
Und es ist auch so dass bei beiden Formeln das Ergebnis abweicht
Gruß Frank
Hallo! :-)
Also so scheint es zu funktionieren aber nur scheinbar ;D
(((([Auftrag_Detais_Datum_Bis]+[Auftrag_Detais_Bis])-([Auftrag_Detais_Datum_Von]+[Auftrag_Detais_Von]))*(24*60))-[Auftrag_Detais_Pause_Min])/60
ich rechne die minuten aus und ziehe die pause ab und rechne das ganze wieder in studen um was tirisch nervt ist das die nachkommastellen trotzden x lang sind obwohl ich in der tabelle nur 2 stellen einstelle
soweit so gut aber wenn die zeit spanne unter 5 min oder 10 min ist dann geht es nicht Bzw der genaue wert ist unklar auf den bild ist es datensatz 9 - 11
edit Update:
weiteres berechnetes feld eingefügt für Minuten und siehe da aus datensatz 9 werden 6 Minuten
Runden([Auftrag_Detais_Dauer]*60;0)
Runden kann ich aber nur in einem extra Feld den sonst bekomme ich die meldung Syntax fehler
Gruß Frank
Hallo,
Ich würde das ganze Vorhaben ohnehin in eine Funktion auslagern, das ist viel übersichtlicher. Außerdem sollte Datum und Zeit in ein Feld und nicht getrennt sein, das mach es auch übersichtlicher. Die Werte musst Du so und so eingeben.
Außerdem würde ich alles in Tagen rechnen, dann musst Du erst mal gar nichts umrechnen außer der Pause, die ist in Tage umzurechnen (Minuten/1440 = Tage als Dezimalzahl). Wenn Du mit DatumZeit Werten direkt rechnest erhältst Du immer Tage.
Erstelle eine Beispieldb im Access2003 (MDB) Format. Ich habe leider nur Access2003.
Hallo!
Danke werde ich versuchen
Ich hab ein solches Beispiel erstellen wollen aber in der version gibt es keine berechneten felder in der tabelle
Hallo,
lasse die berechneten Felder weg, die braucht sowieso kein Mensch, die sollte man auch nicht verwenden. Gerechnet wird in Abfragen.
Erstelle einfach mal eine Tabelle mit den Feldern und beschreibe was Du rechnen willst. Damit man das nicht nachbauen muss.