0

Arbeitszeit Berechnung über Mitternacht

Hallo.

Ich suche schon länger im Forum nach einer Lösung und kann keine finden und komme selbst auch nicht drauf.

Ich möchte eine Datenbank erstellen, wo mitunter die Abeitszeit und die Reisezeit errechnet und verwaltet werden sollen. Hier weiß ich z. B. nicht, mit welchem Datumfeld ich das richtige Ergebnis erziele. Entweder ein Datumsfeld und ein Zeitfeld getrennt oder ein Datum/Zeit-Feld für den Beginn der Reise bzw Arbeitszeit und dem Ende der Reise bzw Arbeitszeit.

Hier nehme ich ein Feld für den Beginn und eins für das Ende. Nun kann ich, wenn ich ein reines Zeitfeld nehme, mit "Ende-Anfang" die Zeit errechnen. Aber bei der Zeit über Nacht (also 21:00 bis 6:00) geht das nicht ohne weiters. Da kommt ein Minuswert raus. 

Also dachte ich an das Datums/Zeit-Feld. Aber damit geht es erst recht nicht.

Wie kann ich das machen?

LG
Peer

19 Antworten

null
    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Peer,

     

    wie wäre es mit einem Terminfeld? Das könntest Du mit duration(Terminfeld) auswerten.

     

    lg, Torsten

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten.

    Danke für die schnelle Hilfe.

    Ich habe es mir schon mal durch gelesen und konnte dem Feld in seiner Funktionsweise nicht richtig folgen. Ich habe bis jetzt nur immer angenommen, dass dieses Feld nur für die Kalenderfunktion vorgesehen ist.

     

    Gruß

    Peer

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Peer,

     

    der Name lässt das vermuten, stimmt. Aber Du musst es, wie das Datums-Feld auch, nicht zwingend im Kalender anzeigen lassen. Das Terminfeld erschlägt alles, was einen Start- und Endezeitpunkt hat. Klassischerweise ist das ein Termin, daher die Namensgebung.

     

    lg, Torsten

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hi Torsten.

    Und wie muss das Script lauten? duration() verlangt nur einen Wert oder?

    LG

    Peer

    • Birger_H
    • vor 4 Jahren
    • Gemeldet - anzeigen

    duration() verlangt ein Termin/Appointment Feld.

    Birger

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Da stehe ich gerade auf dem Schlauch. 

    • Birger_H
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Versuch einfach einmal
    –––
    timeinterval('Ende' - 'Anfang')
    –––

    Birger

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    eigentlich ganz simpel:

     

    https://www.dropbox.com/s/e95ndqkn94g06kb/Dauer.ninox?dl=0

     

    lg, Torsten

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    @Birger

    bei Anfang 17:00 und Ende 7:00 kommt -10:00 raus, statt 14:00.

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten.

    Danke für deine Datei.

    Leider ist das Ergebnis nicht zielführend, denn wenn ich zB am 3.7. 16:50 d3n Anfang und das Ende am 04.07. 14:00 eingeben will, lässt es diese Einstellung nicht zu. Der "Termin" lässt keinen Wert beim "Ende" zu, der weniger als ein Tag ist.

    Der Vorteil deiner Hilfe ist für mich aber, dass ich mal sehe, wie "Termin" aussieht bzw funktioniert. 

    Gruß

    Peer

    • Birger_H
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Anfand und Ende sollten 'Datum/Uhreit'-Felder sein

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke Birger. Das funktioniert. timeinterval ist nicht zu finden in der Referenz, die ich besitze.

    Nachteil ist momentan aber, dass man den Anfang und das Ende nicht in den Kalender bekommt, oder?

     

    LG

    Peer

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Jetzt habe ich die Zeit. Ich habe ihr den Namen Dienstzeit gegeben. Nun habe ich noch ein Auswahlfeld (radiobutton), wo die Pause mit den Werten 30, 45, keine auswählbar ist. 

    Wert 30 = 1, Wert 45 = 2 und Wert 'keine' = 3

    Nun möchte ich die Pause von der Dienstzeit abziehen. Ich habe zu allererst die numerischen Werte mit

    let numbPause := number(Pause);

    ausgelesen. Es wird also, je nachdem, was ich ausgwählt habe, ein Ganzahlwert zurückgegeben.

    Wie kann ich jetzt das Script umsetzen und einen fxFeld Arbeitszeit zurückgeben?...

    wenn Wert = 1 dann Dienstzeit- 30 min, wenn Wert = 2 dann Dienstzeit- 45 und wenn Wert = 3 dann Dienstzeit- 0 min.

    LG

    Peer

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ich habe es bis jetzt folgendermaßen gemacht...

    let numbPause := number(Pause);

    switch numbPause do

    case 1: Dienstzeit - time(0,30)

    case 2: Dienstzeit - time(0,45)

    case 3: Dienstzeit - time(0,00)

    end

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Peer,

     

    3.7. 16:50 - 4.7. 14:00 geht schon - aber tatsächlich nur per manueller Eingabe und wird seltsam/falsch im Terminfeld angezeigt - die Dauer wird indes korrekt berechnet:

     

    Screenshot 2019-07-04 23.19.31

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für deine Hilfe, Torsten.

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank, Birger

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Jungs.

    Eine Frage hätte ich trotzdem noch. Man könnte doch den Wert des Datums/Zeit-Feldes "trennen" und die daraus erstellten Werte einzeln speichern/darstellen? Z.b für einen Bericht, wo nur das Datum gebraucht wird, oder bei weiteren Berechnungen, wie z.B. für Nachtzeiten uä.

    LG

    Peer

    • Peer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    date(Datums/Zeit-Feld) und time(Datums/Zeit-Feld)

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 19Antworten
  • 2933Ansichten