Resttage Anzeige auch mit Formelfeld
Hallo zusammen
Ich würde gerne das Formelfeld nutzen, welches die Restlaufzeit basierend auf einem Datum ebenfalls in einem Formelfeld berechnet. Die entsprechende Formel dafür ist unten aufgeführt.
Code für Restlaufzeit:
if today() = 'Fällig' then
styled(text("Abgabe Heute!"), "orange", "black", "")
else
if today() >= 'Fällig' + 1 then
styled(text('Fällig' - today()), "red", "black", "")
else
if today() + 7 > 'Fällig' then
styled(text('Fällig' - today()), "yellow", "black", "")
else
if not 'Fällig' then
styled(text("???"), "", "black", "")
else
styled(text('Fällig' - today()), "green", "white", "")
end
end
end
end
Code für Datumsberechnung:
if Wartung = 1 then
let LetzteWartung := last(Wartungsregister.' Ausgeführt');
let 'EinJahrSpäter' := date(year(LetzteWartung) + number(text('Int./Jahr')), month(LetzteWartung), day(LetzteWartung));
styled(format('EinJahrSpäter', "DD.MM.YYYY"), if today() > 'EinJahrSpäter' then
"red"
else
if 'EinJahrSpäter' < 60 then "Orange" else "Green" end
end)
end
Wenn ich die Berechnung mit einem Datumsfeld durchführe, funktioniert es einwandfrei. Allerdings, wenn ich stattdessen das Formelfeld mit dem berechneten Datum verwende, funktioniert es nicht mehr. Trotz meiner Versuche, den Code anzupassen, konnte ich das Problem nicht lösen.
Um mein Problem besser zu veranschaulichen, habe ich den unten angezeigten Printscreen mit der Feldbezeichnung erstellt. Ich kann die Restlaufzeit erfolgreich mit einem Datumsfeld berechnen, jedoch nicht mit einem Formelfeld.
Danke für eure Unterstützung.
28 Antworten
-
Hi Stephan. Das kommt wahrscheinlich von der Umrechnung des Datumsformats in number(). Dabei wird nun auch die zukünftige Stunde bei der Winterzeitumstellung eingerechnet. Versuche mal folgendes im Script für die Restzeit/Tage. Mirko
if Wartung = 1 and Status = 1 or Wartung = 1 and Status = 2 then let LetzteWartung := last(Wartungsregister.' Ausgeführt'); let oneyearlater := date(year(LetzteWartung) + number(text('Int./Jahr')), month(LetzteWartung), day(LetzteWartung)); if today() = oneyearlater then styled(text("Abgabe Heute!"), "orange", "black", "") else if today() >= oneyearlater + 1 then styled(text(oneyearlater - today()), "red", "black", "") else if today() + 30 > oneyearlater then styled(text(oneyearlater - today()), "yellow", "black", "") else if not oneyearlater then styled(text("???"), "", "black", "") else styled(text(oneyearlater - today()), "green", "white", "") end end end end end
-
Stephan Stucki
Hast du mal die Funktion days() getestet statt der Subtraktionen?
Statt: text(oneyearlater - today())
days(today(), OneYearLater)
oder
days(OneYearLater,today())
je nach erwartetem Vorzeichen -
Hier noch der funktionierende Code von der Community-Unterstützung für die die es interessiert:
if Wartung = 1 and Status = 1 or Wartung = 1 and Status = 2 then let LetzteWartung := date(last(Wartungsregister.' Ausgeführt')); let oneyearlater := date(year(LetzteWartung) + number(text('Int./Jahr')), month(LetzteWartung), day(LetzteWartung)); let vAnzeige := text(days(today(), oneyearlater)) + " Tage"; if today() = oneyearlater then styled(text("Abgabe Heute!"), "orange", "black", "") else if today() >= oneyearlater + 1 then styled(vAnzeige, "red", "black", "") else if today() + 60 > oneyearlater then styled(vAnzeige, "yellow", "black", "") else if not oneyearlater then styled(text("???"), "", "black", "") else styled(vAnzeige, "green", "white", "") end end end end end
Content aside
- Status Answered
-
2
„Gefällt mir“ Klicks
- vor 1 JahrZuletzt aktiv
- 28Antworten
- 236Ansichten
-
5
Folge bereits