0

"Infinity" abfangen

Ich würde gerne das Berechnungsergebnis Infinity abfangen. 
Folgende Formel habe ich eingegeben: 
if text (EK) = "Infinity" then text (EK)  = "0" else
let Basisjahr := max(EK.Jahr)
let Basis_10 := number(Basisjahr) - 10;
let EK := first(EK[Basisjahr = Jahr].EK) / first(EK[Basis_10 = Jahr].EK) * 100;
if EK > 265 then
styled(text(EK) + "%", "", "green", "check")
else
styled(text(EK) + "%", "", "red", "warn")
end
end 

Es erscheint die Fehlermeldung, dass "dann" und "sonst" unterschiedliche Datentypen zurück liefern -> und zwar in Zeile 10 wo "end" steht.  

Dank für Euere Hilfe.   

1 Antwort

null
    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Nikolaas, was ist 'EK' denn für ein Feldtyp? Und woher kommt bzw. wie entsteht der Inhalt? Bei "then" weist du 'EK' einen Textwert zu, bei "else" einen numerischen. Das ist wahrscheinlich der Grund für diese Fehlermeldung. Es kämen aber vermutlich noch weitere, denn in deinem Skript nutzt du 'EK' dann aber auch noch in Verbindung mit Verknüpfungen und als Variablenbezeichnung. Das ergibt für mich irgendwie überhaupt keinen Sinn.

    Ungeachtet dessen zur Ausgangsfrage: "Infinity" erscheint normalerweise in Funktionsfeldern als Ergebnis fehlerhafter Berechnungen, z. B. bei Division durch Null. Man kann ein Funktionsfeld zwar tatsächlich auf "Infinity" abfragen, besser wäre es allerdings, den Fehler schon vorher abzufangen, es also erst gar nicht erst zu der fehlerhaften Berechnung kommen zu lassen. Dazu müsste man sich die Formel ansehen, mit der 'EK' berechnet wird, und dort eine Abfrage einbauen, die den Wert z. B. auf 0 (numerisch) oder "null" (leer) setzt, wenn er nicht korrekt berechnet werden kann.