2

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

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    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_S
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG danke. Ich habe direkt in die Tabelle ein Berechnungsfeld mit reinem Datum erstellt und so sortiert. Die Farbe wir über die Tagesspalte ausgewiesen, das sollte reichen.

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    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

    • Stephan_S
    • vor 1 Jahr
    • Gemeldet - anzeigen

    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