0

Dauer berechnen

Hallo, wir wollen einen Ausfallzeit berechnen. Dazu geben wir in einer Tabelle StartDatum und Startzeit ein. Wenn der Ausfall behoben ist, wird EndDatum und EndZeit eingetragen und nun soll die Ausfallzeit mit einem Dauerfeld berechnet werden. Jetzt muss aber noch berücksichtigt werden, das nur Zeit im Arbeitszeitraum angerechnet werden soll.

Also Beispiel:

Ausfall:
14.04.2018 10:00 Uhr (Samstag) -

Ausfall behoben:
16.04.2018 10 Uhr (Montag)

Arbeitszeit ist Montag bis Freitag: 06:00 - 17:00 Uhr
Also sollte die Ausfallzeitdauer: 4 Stunden sein, da Samstag und Sonntag keine Arbeitszeit und Montag von 06:00-10:00 Uhr nur angerechnet werden solten.

Können Sie uns da bitte weiterhelfen? Vielen Dank!

16 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo, noch ein Paar Fragen:

    1. Werden die Nachtzeiten auch nicht angerechnet (ausfall Montag 16:00-Behoben Dienstag 07:00 Ausfallzeit 2h)?

    2. Wird die Störung innerhalb 24 behoben oder können auch Tage dazwischen liegen (Ausfall Montag 16:00-Behoben Donnerstag 07:00 Ausfallzeit 1+11+11+1=24h

    3. In welchenEinheiten sollte die zeit berechnet werden HH:mm oder dezimal. Die Dezimale Berechnung erleichtert später die Kostenberechnungen.

    • MDHW2018
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leonid,

    vielen Dank für deine Hilfe :)

    1. Ja genau das wären dann nur 2 Stunden. Es sollen nur die Ausfallzeiten in einer Dienstzeit angerechnet werden.

    2. Ja es können auch mal ein paar Tage dazwischen liegen

    3. Es wäre schön, wenn wir das in Tage und Stunden angezeigt bekommen könnten. also z.B 3 Tage, 12 Stunden, 45 Minuten.

    Nochmal vielen Dank für die Mühe

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Es dauert länger als ich dachte.

    Noch eine Frage:

    Passieren die Ausfälle nur innerhalb der Arbeitszeiten oder kann es sein, das es z.B. um 18:00 oder um 03:00 passiert?

    • MDHW2018
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Oha das ist wohl ganz schön komplex und kompliziert was wir da brauchen. Also es kann auch außerhalb der Arbeitszeiten auftreten. Der genaue Zeitraum (Datum/Uhrzeit) sollte eingetragen werden, aber die Ausfallzeit soll nur für die enthaltenen Arbeitszeiten in dem gesamten Zeitraum berechnet werden. Hoffe ich konnte das einigermaßen erklären :)

    DANKE!!!

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Habe jetzt die Datenbank in Web Summit 2018 unter 67_AUSFALLZEITEN gespeichert. 

    Die Formel liegt auf Tabellenebene als Trigger (nach Änderung). 

    Grüße

    Leo

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Falls du nicht bei Web Summit 2018 registriert bist, hier ein Link:

     

    https://www.dropbox.com/s/l0gxjw2o92xp7ae/67_AUSFALLZEITEN.ninox?dl=0

    • MDHW2018
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leonid,

    vielen Dank. Wollte die Datei grad mal importieren, aber es kommt leider eine Fehlermeldung:

    "Error: Unknown ui type text" Wir benutzen hier noch die Windows Server Version 1.7.1.1. Ich nehme an, daran

    liegt es oder? Eigentlich wurde ja schon seit Monaten ein Update für den lokalen Server versprochen, aber leider tut sich da nichits ;(

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ja, das stimmt. In der Datenbank sind skripte verwendet worden, die in der alten Version noch nicht gabs.

    Ich warte auch auf die neue Version, wurde für diese Woche angekündigt. Unsere IT akzeptiert keine Cloud-Lösungen. 

    • MDHW2018
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ja geht uns auch so, Cloud kommt nicht in Frage :o) Naja ich hoffe das es dann bald mit der neuen Version klappt, wie gesagt werde schon seit Monaten vertröstet :) Danke dir erstmal und melde mich, sobald ich es testen kann!

    • Stephan_S
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Herr Semik, können Sie mir vielleicht einen Tipp geben, wie die Berechung mit Datum + Uhrzeit Feld funktioniert.

    Ich möhte gerne die Produktionszeit berechnen. Gearbeitet wird bei uns von Mo.-Fr., von 07:00 -12:00 und von 13:00 - 16:00 Uhr. Die Erfassung Start und Stoppp erfolgt wie bereits erwähnt über je ein Datum + Uhrzeit Feld.

    Besten Dank.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Stephan, 

    es gibt mehrere Möglichkeiten. Da die Arbeitszeit später mit anderen Zahlen multipliziert wird, ist es sinnvoll, die Zeiten als Zahl darzustellen. Mit number(Endzeit)-number(Anfangszeit) bekommt man ein Ergebnis in Millisekunden. Wenn man jetzt das Ergebnis durch 1000 teilt, bekommt man Sekunden und jetzt nochmal durch 60 für Minuten und nochmal durch 60 für Stunden. So bekommt man eine Zahl, welche man später mit Stundenlohn multiplizieren kann

    Leo

    • Stephan_S
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo

    Danke für die schnelle Rückmeldung.

    Um die reine Produktionszeit aufzunehmen habe ich mich Deines Codes (siehe Code unten) bedient und diesen für unsere Bedürfnisse angepasst. Die für die Produktion aufgewendete Zeit wird im Feld Prouduktionszeit/h (Zeitdauer Feld) angezeigt. Für die Berechnung der Nebentätigkeiten habe ich eine Untertabelle mit Start und Stopp (Uhrzeit Feld) erstellt, die wie folgt jeweils in einem Berechungsfeld berechnet werden.

    if Stopp then
    number(Stopp
    - Start) / 3600000
    else
    0
    end

     

    Nun möchte ich gerne die Produktionszeit zusammen mit der Summe der Nebentätigkeiten addieren. Das klappt jetzt natürlich nicht so einfach, da ich die Addition mit zwei unterschiedlichen Feldtypen machen möchte. Ich habe aber keine Lösung gefunden wie ich die Berechnung anstelle Zeitdauerfeld in ein Zahlen- bzw. Berechnungsfeld bringe um diese dann addieren zu können.

     

    Modifizierter Code Leo:

    if 'Start Datum' != null and 'Start Zeit' != null and 'Stopp Datum' != null and 'Stopp Zeit' != null then
    let mySTARTDATUM := if number('Start Zeit') < 25200000 then
    'Start Datum'
    else
    'Start Datum' + 1
    end;
    let myRESTANFANG := if number('Start Zeit') >= 25200000 and number('Start Zeit') < 57600000 then
    57600000 - number('Start Zeit')
    else
    0
    end;
    let myEND := number('Stopp Zeit') - 25200000;
    var myDD := 0;
    for II from number(mySTARTDATUM) to number('Stopp Datum') step 86400000 do
    myDD := if weekday(II) < 5 then myDD + 1 else myDD + 0 end
    end;
    'Produktionszeit/h' := if 'Start Datum' = 'Stopp Datum' and number('Start Zeit') < 57600000 then
    if number('Start Zeit') < 25200000 then
    number('Stopp Zeit') - 25200000
    else
    'Stopp Zeit' - 'Start Zeit'
    end
    else
    myRESTANFANG + myEND + myDD * 11 * 60 * 60 * 1000 / 36000000
    end
    else
    'Produktionszeit/h' := null
    end

    Vielleicht kannst Du mir darauf einen guten Lösungsansatz.

    Gruss Stephan 

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Stephan,

    die beiden Felder, die ich hier sehe ('Produktionszeit/h' und 'Total/h') sind eigentlich die Zahlenfelder und die Formel für

    Raumbelegungzeit sollte dann so sein:

    ---

    'Produktionszeit/h'+sum('Tabelle Zeitaufnahme'.'Total/h')

    ---

    Leo

    • Stephan_S
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo 

    Danke für die Rückmeldung. 

    Ich habe einigemale vesucht die beiden Zahlen zusammen zu rechnen. Das Resultat ergibt aber keinen Sinn :-(. 

    Anhand der angefügten Skizze ist der Rechnungsweg bzw. mein Ansatz abgebildet. Ich vermute, dass das Problem mit dem Feld 'Produktionszeit/h' (Zeitdauer) in Verbindung steht und sich dieses Feld nicht ohne weiteres mit der Summe sum('Tebelle Zeitaufnahme'.'Total/h') korrekt addieren lässt. 

    Gruss Stephan

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Dann vielleicht so:

    ---

    number('Produktionszeit/h')/3600000+sum('Tabelle Zeitaufnahme'.'Total/h')

    ---

    Leo

    • Stephan_S
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke Leo

    So hat's geklappt! :-)

    LG Stephan 

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 16Antworten
  • 7018Ansichten