0

Überarbeitung des Codes zur Wartungsanzeige für verzögerte "Rot"-Statusanzeige

Hallo zusammen

Der folgende Code überprüft den Wert der Variablen "Wartung" und verarbeitet die Wartungsdaten. Er berechnet das Datum "EinJahrSpaeter" basierend auf dem letzten Wartungsdatum und einer angegebenen Anzahl von Jahren als Zyklus. Das formatierte Datum wird dann mit einem entsprechenden Status ausgegeben.

Die gewünschte Änderung besteht darin, dass der Status "rot" erst aktiviert werden soll, nachdem der betreffende Monat vollendet wurde. In der ursprünglichen Version des Codes wurde der Status "rot" bereits angezeigt, wenn der Tag überschritten wurde.

Um dies zu ändern, muss der Code umgeschrieben werden, sodass der Status "rot" erst angezeigt wird, wenn das aktuelle Jahr größer als das Jahr von "EinJahrSpaeter" ist und der aktuelle Monat größer als der Monat von "EinJahrSpaeter". Dadurch wird sichergestellt, dass der Status "rot" erst nach der Vollendung des Monats aktiv wird.

Leider treten beim aktuellen Code drei Fehlermeldungen auf, und ich finde keine Lösung, diese zu beheben.

Angepasstes Skript:

if Wartung = 1 then
    let LetzteWartung := last(Wartungsregister.'📆 Ausgeführt');
    let EinJahrSpaeter := date(year(LetzteWartung) + number(text('Int./Jahr')), month(LetzteWartung), day(LetzteWartung));
    let myM := month(EinJahrSpaeter);
    let currentDate := today();
    let currentYear := year(currentDate);
    let currentMonth := month(currentDate);
    let isMonthExceeded := if currentYear > year(EinJahrSpaeter) || (currentYear = year(EinJahrSpaeter) && currentMonth > myM) then true else false;
    let status := if isMonthExceeded then "red" else if currentDate > EinJahrSpaeter then "orange" else "green";
    styled(format(EinJahrSpaeter, "DD.MM.YYYY"), status)
end

Meldungsausgabe: 

Jemand eine Idee wie sich das beheben lässt?

Ursprüngliche Skript:

if Wartung = 1 then
    let LetzteWartung := last(Wartungsregister.'📆 Ausgeführt');
    let 'EinJahrSpäter' := date(year(LetzteWartung) + number(text('Int./Jahr')), month(LetzteWartung), day(LetzteWartung));
    format('EinJahrSpäter', "DD.MM.YYYY");
    let myD := number(item(split(text('EinJahrSpäter'), "."), 0));
    let myM := number(item(split(text('EinJahrSpäter'), "."), 1));
    let myJ := number(item(split(text('EinJahrSpäter'), "."), 2));
    date(myJ, myM, myD);
    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

Freue mich auf eure Rückmeldung.

4 Antworten

null
    • Torsten_Stang.1
    • vor 1 Jahr
    • Gemeldet - anzeigen
    let isMonthExceeded := if (currentYear > year(EinJahrSpaeter) or currentYear = year(EinJahrSpaeter)) and currentMonth > myM then true else false end;
    

    eigentlich sollte es auch kürzer gehen:

    let isMonthExceeded := if not currentYear < year(EinJahrSpaeter) and currentMonth > myM then true else false end;
    
      • Stephan_S
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang Hallo Torsten, schon mal besten Dank. Ich habe es versucht, nun habe ich eine andere Meldung die bei "end" erscheint:

      Aktueller Code:

      if Wartung = 1 then
          let LetzteWartung := last(Wartungsregister.'📆 Ausgeführt');
          let EinJahrSpaeter := date(year(LetzteWartung) + number(text('Int./Jahr')), month(LetzteWartung), day(LetzteWartung));
          let myM := month(EinJahrSpaeter);
          let currentDate := today();
          let currentYear := year(currentDate);
          let currentMonth := month(currentDate);
         let isMonthExceeded := if not currentYear < year(EinJahrSpaeter) and currentMonth > myM then true else false end;
          let status := if isMonthExceeded then "red" else if currentDate > EinJahrSpaeter then "orange" else "green";
          styled(format(EinJahrSpaeter, "DD.MM.YYYY"), status)
      end
      
      

      • Torsten_Stang.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Stephan in Zeile 9 ist der if-Term nicht durch "end" abgeschlossen...

      • Stephan_S
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang danke! So funktioniert es 😊. Mal schauen wie weit ich komme bis ich wieder anstehe. 😉