Loris Matteo Posted April 16 Share Posted April 16 Hallo liebe SMAPLand Community Ich möchte in einem Prüfrapport einen Hinweis basierend auf einem Datum lösen. Der Prüfer soll ein Jahr eingeben und wenn dieses älter als vier Jahre ist, sollte ein Hinweis / Aufforderung erscheinen oder ein Hinweis dass alles ok ist. Im SMAP habe ich die folgenden Felder. -Aktuelles Jahr (über eine Datum / Zeiterfassung) >> Wertausgabe als Jahr -Datumfeld für manuellen Eintrag der letzten Kontrolle >> z.b. 2018 -Textfeld mit Hinweis (sollte eingeblendet werden, wenn das Datum des Datumsfeldes älter als 4 Jahre ist) -Textfeld mit Hinweis (sollte eingeblendet werden, wenn das Datum des Datumfeldes innerhalb der 4 Jahre ist) Aber ich kriege das mit der Formel irgendwie nicht hin. Habt ihr eine Idee wie man das umsetzten könnte? Danke eure Hilfe. Grüsse Manuel 2 Link to comment Share on other sites More sharing options...
Manuel Rühl Posted April 16 Share Posted April 16 Guten Morgen, Probier mal in einem Textergebnisfeld: IF(LESSTHAN({datum_aktuell},ADD_PERIOD({datum_letztekontrolle},P1461D)),"alles ok","bitte prüfen") P1461D sind 3 Jahre normal und 1 Schaltjahr als Tage = 1461. Bei 4 Jahren müsste das ganz gut passen. Wenn die Textfelder umfangreicher sind kannst Du daraus auch eine Aktivierungsregel machen. 1 2 Link to comment Share on other sites More sharing options...
Loris Matteo Posted April 16 Author Share Posted April 16 HI Manuel. Danke für dein rasches Feedback. Habe das versucht, aber erhalte aktuell noch eine Fehlermeldung wegen inkompatiblen Operanden. Kann das sein, dass es hier ein Problem mit den Datum und Zahlwerten bei der Eingabe gibt? Aktuelle Formel: IF(LESSTHAN({Kontrolljahr},ADD_PERIOD({iwb_plombendatum},P1461D)),"alles ok","Ventil wechseln (4 Jahre +)") 1 Link to comment Share on other sites More sharing options...
Manuel Rühl Posted April 16 Share Posted April 16 Du kannst einfach den {Timestamp} nutzen. Ich war mir aber nicht ganz sicher, was für Dich "älter als 4 Jahre" ist. Man kann leider nicht das Jahr aus einem Datum rausholen um damit weiter zu rechnen.... Das Thema ist aber bekannt. https://portal.productboard.com/1zukbs88k3fmynuc66j34p17/c/31-rechnen-mit-monaten-und-jahren?&utm_medium=social&utm_source=starter_share 1 Link to comment Share on other sites More sharing options...
Bülent Erbas Posted April 16 Share Posted April 16 Guten Morgen, kannst du bitte einen Screenshot von deinen Bausteinen posten? Vielleicht kann man das besser erkennen. 1 Link to comment Share on other sites More sharing options...
Loris Matteo Posted April 16 Author Share Posted April 16 Hallo zusammen. Ich habe den Wert durch den Timestamp ausgetauscht. Formel aktuell: IF(LESSTHAN({Timestamp},ADD_PERIOD({iwb_plombendatum},P1461D)),"alles ok","Ventil wechseln (4 Jahre +)") Screenshots der Bausteine: >> Timestamp generiert ein Jahr Datum auf der letzen Plombe >> Müsste eigentlich ein Jahr sein Resultat sollte ergeben, dass wenn das Datum älter als vier Jahre her ist, ein Hinweis auftaucht 1 Link to comment Share on other sites More sharing options...
Bülent Erbas Posted April 16 Share Posted April 16 (edited) Die Funktion ADD_PERIOD funktioniert nicht überall. Da muss man etwas anders vorgehen. Das kann man bestimmt optimieren, aber so funktioniert es erst einmal 🙂 Edited April 16 by Bülent Erbas 1 2 Link to comment Share on other sites More sharing options...
Loris Matteo Posted April 16 Author Share Posted April 16 Hi Bülent. WOW. Danke für die ausführliche Anleitung. Cool. Das Problem wird aber das Prompendatum sein. Das muss ein manuell eingegebener Wert sein und dieser ist eigentlich nur ein Jahr (Blombe mit Jahr drauf, welches vom Monteur in den Rapport eingetragen wird). Ich glaube das wird schwer, da natürlich dann nur ein Jahr drin steht und kein Datum. Oder gibt es eine Variante, dass mann z.b. 2022 eingibt und dies dann zu z.B. 1.1.2022 umgewechselt wird und man damit weiterrechnen kann? 1 Link to comment Share on other sites More sharing options...
Bülent Erbas Posted April 16 Share Posted April 16 Sehr gerne. 😀 Die Grundthematik ist tatsächlich der vorausgesetzte Datentyp der ADD_PERIOD bzw. SUB_PERIOD-Funktionalität. Hier gibt es ausführlichere Informationen dazu. Dokumentation - formulas | smapOne Lass mich noch mal schauen... vielleicht gibt es ja noch eine Möglichkeit 1 1 Link to comment Share on other sites More sharing options...
Solution Micha Zenke Posted April 16 Solution Share Posted April 16 Hallo zusammen, ich hab ggf. einen Ansatz der funktionieren könnte. Die Formel für {Jahr_2} schreib ich dir mal als klar Text: IF(EQUALS({Jahr},"0000"),0,SUM( IF (GREATERTHANOREQUAL(LENGTH({Jahr}),1), IF(EQUALS(RIGHT({Jahr},1)"1"),1, IF(EQUALS(RIGHT({Jahr},1)"2"),2, IF(EQUALS(RIGHT({Jahr},1)"3"),3, IF(EQUALS(RIGHT({Jahr},1)"4"),4, IF(EQUALS(RIGHT({Jahr},1)"5"),5, IF(EQUALS(RIGHT({Jahr},1)"6"),6, IF(EQUALS(RIGHT({Jahr},1)"7"),7, IF(EQUALS(RIGHT({Jahr},1)"8"),8, IF(EQUALS(RIGHT({Jahr},1)"9"),9))))))))),0), IF (GREATERTHANOREQUAL(LENGTH({Jahr}),2), IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"1"),10, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"2"),20, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"3"),30, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"4"),40, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"5"),50, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"6"),60, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"7"),70, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"8"),80, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"9"),90))))))))),0), IF (GREATERTHANOREQUAL(LENGTH({Jahr}),3), IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"1"),100, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"2"),200, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"3"),300, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"4"),400, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"5"),500, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"6"),600, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"7"),700, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"8"),800, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"9"),900))))))))),0), IF (GREATERTHANOREQUAL(LENGTH({Jahr}),4), IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"1"),1000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"2"),2000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"3"),3000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"4"),4000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"5"),5000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"6"),6000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"7"),7000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"8"),8000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"9"),9000))))))))),0), )) Also im Prinzip wandeln wir im ersten Schritt den Zeitpunkt um in einen Text. Im zweiten Punkt wieder in eine Zahl. Und dann kannst du wieder normal Rechnen 😉 Ein bisschen von hinten durch die Brust ins Auge aber es Funktioniert 😄 Ich hoffe es hilft die weiter 🙂 Gruß Micha 3 3 Link to comment Share on other sites More sharing options...
Bülent Erbas Posted April 16 Share Posted April 16 (edited) Sehr nice @Micha Zenke Man darf aber ja keine Klammer vergessen 😂 Aber es gibt Hoffnung: Edited April 16 by Bülent Erbas 2 Link to comment Share on other sites More sharing options...
Micha Zenke Posted April 16 Share Posted April 16 vor 3 Minuten schrieb Bülent Erbas: Man darf aber ja keine Klammer vergessen 😂 Deswegen hab ich das auch kopiert 😎 2 3 1 Link to comment Share on other sites More sharing options...
Loris Matteo Posted April 16 Author Share Posted April 16 vor 4 Stunden schrieb Micha Zenke: Hallo zusammen, ich hab ggf. einen Ansatz der funktionieren könnte. Die Formel für {Jahr_2} schreib ich dir mal als klar Text: IF(EQUALS({Jahr},"0000"),0,SUM( IF (GREATERTHANOREQUAL(LENGTH({Jahr}),1), IF(EQUALS(RIGHT({Jahr},1)"1"),1, IF(EQUALS(RIGHT({Jahr},1)"2"),2, IF(EQUALS(RIGHT({Jahr},1)"3"),3, IF(EQUALS(RIGHT({Jahr},1)"4"),4, IF(EQUALS(RIGHT({Jahr},1)"5"),5, IF(EQUALS(RIGHT({Jahr},1)"6"),6, IF(EQUALS(RIGHT({Jahr},1)"7"),7, IF(EQUALS(RIGHT({Jahr},1)"8"),8, IF(EQUALS(RIGHT({Jahr},1)"9"),9))))))))),0), IF (GREATERTHANOREQUAL(LENGTH({Jahr}),2), IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"1"),10, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"2"),20, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"3"),30, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"4"),40, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"5"),50, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"6"),60, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"7"),70, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"8"),80, IF(EQUALS(LEFT(RIGHT({Jahr},2),1)"9"),90))))))))),0), IF (GREATERTHANOREQUAL(LENGTH({Jahr}),3), IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"1"),100, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"2"),200, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"3"),300, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"4"),400, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"5"),500, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"6"),600, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"7"),700, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"8"),800, IF(EQUALS(LEFT(RIGHT({Jahr},3),1)"9"),900))))))))),0), IF (GREATERTHANOREQUAL(LENGTH({Jahr}),4), IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"1"),1000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"2"),2000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"3"),3000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"4"),4000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"5"),5000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"6"),6000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"7"),7000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"8"),8000, IF(EQUALS(LEFT(RIGHT({Jahr},4),1)"9"),9000))))))))),0), )) Also im Prinzip wandeln wir im ersten Schritt den Zeitpunkt um in einen Text. Im zweiten Punkt wieder in eine Zahl. Und dann kannst du wieder normal Rechnen 😉 Ein bisschen von hinten durch die Brust ins Auge aber es Funktioniert 😄 Ich hoffe es hilft die weiter 🙂 Gruß Micha WOW Micha!!! Was für eine Formel. Toll. Danke für deine Arbeit. Grossartig. Funktioniert tiptop. Sensation 💪🏆 3 1 Link to comment Share on other sites More sharing options...
Loris Matteo Posted April 18 Author Share Posted April 18 Gibt es eigentlich eine Möglichkeit, solche Hinweistexte farblich zu hinterlegen, dass diese mehr auffallen? Cool wäre z.b. eine Orange Box wenn für Wert 1 und eine Grüne für Wert 2 oder so. 1 Link to comment Share on other sites More sharing options...
_Moritz_ Posted April 18 Share Posted April 18 @Loris Matteo schau mal hier 1 1 Link to comment Share on other sites More sharing options...
Loris Matteo Posted April 18 Author Share Posted April 18 @Moritz oje. Schade. Dürfte da wirklich noch etwas ausgebaut werden… 1 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now