0

Berechnungsfelder je nach Ergebnis einfärben

Hallo zusammen,

wie kann ich denn berechnungsfelder je nach formelerebniss einfärben? 

Skript im Berechnungsfeld:

let b := Kalenderjahr;
let a := sum((select Differenzen)[Rechnungen.'Abrechnung zu Kalenderjahr' = b and Rechnungen.'KW Leistungsdatum' = 6].'Brutto Rechnungsbetrag');
let c := sum((select Dispoumsatz)['KW Auswahl' = 6][Kalenderjahr = b].Dispoumsatz) / 100 * 96;
if Kalenderjahr = b and c > 0 and a > 0 then
a - c
else
0
end

Ziel soll sein, das eine bessere KW Übersicht entsteht. ( Wo stimmen Rechnungstellung und Dispozahlen nahezu überein und wo muss genau geschaut werden) 

Danke

10 Antworten

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

    Hallo Michi, zur farblichen Formatierung gibt es die Funktion styled(). Man könnte es also bspw. so versuchen:

     

    let b := Kalenderjahr;
    let a := sum((select Differenzen)[Rechnungen.'Abrechnung zu Kalenderjahr' = b and Rechnungen.'KW Leistungsdatum' = 6].'Brutto Rechnungsbetrag');
    let c := sum((select Dispoumsatz)['KW Auswahl' = 6][Kalenderjahr = b].Dispoumsatz) / 100 * 96;
    if Kalenderjahr = b and c > 0 and a > 0 then
       styled(text(a - c), "Red")
    else
       styled("0", "Green")
    end

    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke dir erstmal,

    das hatte ich schon probiert, leider ist das feld dann leer. Fehlermeldung ist keine vorhanden.

    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    kann das an den Variablen "a" und "c" liegen? Wenn man styled auf einfache felder bezieht geht es. ???

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hm. Wenn das Ergebnis ohne styled() korrekt angezeigt wird, dann muss es auch mit styled() korrekt angezeigt werden, denn die Funktion macht ja nichts anderes als das Ergebnis in einen Text umzuwandeln und farblich zu hinterlegen. Die Syntax scheint auch korrekt zu sein.

     

    Allerdings verstehe ich das mit dem Kalenderjahr nicht. Es wird erst in Variable 'b' übernommen und dann abgefragt, ob es mit Variable 'b' übereinstimmt. Das macht für mich keinen Sinn, weil die Antwort zwangsläufig immer "Ja" lauten muss.

     

    Nebenbei: Es kann gelegentlich zu Problemen führen, wenn man Variablen mit nur einem Zeichen benennt. Um sowas auszuschließen, würde ich deshalb mindestens zwei Buchstaben vergeben (z. B. 'bb', 'myb' o. ä.).

    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    let b:= Kalenderjahr ist ein Auswahlfeld  in Differenzen / Rechnungen.'Abrechnung zu Kalenderjahr' = b ( Auswahlfeld in Rechnungen) / Kalenderjahr = b (Auswahlfeld in Dispoumsatz) 

    Ninox sammelt sich die werte für das jeweilige Kalenderjahr und der dazugehörigen Kalenderwoche zusammen. Diese werden dann in dem Berechnungsfeld (53 an der Zahl ) dargestellt. Ich weis man sollte nicht so viele Berechnungsfelder verwenden. Aber für die Darstellung ist es am übersichtlichsten. 

    Funktionieren tut dies so wie es soll. Je nach kalenderjahr Auswahl werden die felder befüllt. Ich könnte jetzt noch einen weg gehen und 53 weitere Berechnungsfelder erstellen, welche dann mit if / then / else drei farben zugewiesen bekommen aus den werten der bestehenden Berechnungsfelder. Dies funktioniert dann komischer weise wieder. Würde aber ein riesen aufwand sein. 

    if 'KW 01' > 0 then
    styled(text('KW 01'), "LightGreen")
    else
    if 'KW 01' < 0 and 'KW 01' > 2000 then
    styled(text('KW 01'), "LightSalmon")
    else
    if 'KW 01' < 2000 then
    styled(text('KW 01'), "DarkRed")
    end
    end
    end

    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Bildschirmfoto 2021-03-08 um 14.49.33

     

    Bildschirmfoto 2021-03-08 um 14.50.29

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Puh, jetzt blicke ich da nicht mehr durch. Deine ursprüngliche Frage war, wie man "Berechnungsfelder je nach Ergebnis einfärben" kann. Die Antwort lautete: Mit der Funktion styled().

     

    Ich war davon ausgegangen, dass deine Formel ansonsten funktioniert und das richtige Ergebnis bringt. Wenn ich mir deine letzten Kommentare und die Screenshots so ansehe, dann scheint mir das Problem aber ein ganz anderes zu sein.

     

    Wie gesagt, auf die Schnelle blicke ich da leider nicht durch, sorry. Vielleicht hat jemand anderes eine Idee. Ansonsten würde ich mir das eventuell später noch mal in Ruhe ansehen in der Hoffnung auf eine Eingebung zu Problem und möglicher Lösung.

    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Die Berechnung passt! Nur wenn ich styled direkt anwenden möchte, bringt der ein leeres Feld. Zb 'KW 01' funktioniert ohne styled mit geht es nicht. Wenn man noch ein berechnungsfeld erstellt mit styled und Bezug auf 'KW 01' dann geht das.  Das möchte ich aber gerne vermeiden, da noch mal 53 felder erforderlich sind.

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Wenn die Berechnung ohne styled() das richtige Ergebnis bringt, dann kann ich mir nicht erklären, warum es mit styled() nicht angezeigt wird. Man kann testweise mal versuchen, das anders zusammenzusetzen:

     

    let myResult := 0;
    let myColor := "";
    let b := Kalenderjahr;
    let a := sum((select Differenzen)[Rechnungen.'Abrechnung zu Kalenderjahr' = b and Rechnungen.'KW Leistungsdatum' = 6].'Brutto Rechnungsbetrag');
    let c := sum((select Dispoumsatz)['KW Auswahl' = 6][Kalenderjahr = b].Dispoumsatz) / 100 * 96;
    if c > 0 and a > 0 then
       myResult := a - c;
       myColor := "Red"
    else
       myColor := "Green"
    end;
    styled(text(myResult), myColor, "", "")

     

    Die Abfrage "if Kalenderjahr = b" ist m. E. aber in jedem Fall sinnlos, da "b" ja vorher der Wert von "Kalenderjahr" zugewiesen wurde und zwischenzeitlich keiner der beiden Werte verändert wird. Deshalb habe ich das hier einfach mal weggelassen.

    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke für deine Hilfe,

    Probiere ich morgen mal aus