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
-
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.
-
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
-
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?
-
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!!!
-
Habe jetzt die Datenbank in Web Summit 2018 unter 67_AUSFALLZEITEN gespeichert.
Die Formel liegt auf Tabellenebene als Trigger (nach Änderung).
Grüße
Leo
-
Falls du nicht bei Web Summit 2018 registriert bist, hier ein Link:
https://www.dropbox.com/s/l0gxjw2o92xp7ae/67_AUSFALLZEITEN.ninox?dl=0
-
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 ;(
-
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.
-
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!
-
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.
-
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
-
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
endVielleicht kannst Du mir darauf einen guten Lösungsansatz.
Gruss Stephan
-
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
-
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
-
Dann vielleicht so:
---
number('Produktionszeit/h')/3600000+sum('Tabelle Zeitaufnahme'.'Total/h')
---
Leo
-
Danke Leo
So hat's geklappt! :-)
LG Stephan
Content aside
- vor 5 JahrenZuletzt aktiv
- 16Antworten
- 7109Ansichten