NULL-Wert in IF-Klausel verhält sich nicht mehr wie bisher (vor LL27)

Ich habe eine Applikation von LL22 auf LL27 migriert. Jetzt habe ich folgendes Problem:
Es wird eine Formel benutzt, um die Farbe von diversen Feldern zu setzen. Über eine IF-Klausel und ein Nullable-Boolean-Feld (aus einen .NET-Dataset) wird entweder Farbe 1 oder Farbe 2 gesetzt. Ist die Boolean-Feldvariable NULL, dann war bisher das Ergebnis auch NULL und es wurde (Voreinstellung) für die Farbe verwendet.

Anstatt einer Feld-Variable habe ich direkt Null() genommen um das Problem zu verdeutlichen und damit es direkt ausprobiert werden kann.

Beispiel (Als Formel für die Schriftfarbe):
if (Null(), LL.Color.Red,LL.Color.Blue)

Ergebnis in LL22 (seit LL12):
Null() → es wird Schwarz (Voreinstellung) genommen
Ergebnis in LL27 (SP3)
LL.Color.Blue

Ist das eine beabsichtigte Verhaltensänderung? Ich kann natürlich die Formel anpassen, allerdings gibt es Kunden mit selbst definierten Reports, was es relativ “doof” macht.
Hat jemand eine Idee?
Vielen Dank

Hallo!
Schau mal in die Updatehinweise rein, da gab mal was mit Nullhandling.
Stichwort: LL_OPTION_NULL_IS_NONDESTRUCTIVE
und
ansonsten NullSafe() oder IsNull() bzw. IsNullOrEmpty() verwenden.

HP

Hallo Stefan und Herzlich Willkommen im List & Label Forum. :grinning:

Es ist richtig, dass wir das Verhalten geändert oder besser gesagt korrigiert haben, denn der ISO-Standard sieht für NULL in einer IF-Bedingung den False-Pfad vor. Es gibt aber eine Option:

#define LL_OPTION_COMPAT_NULL_IN_COND_ARG1_YIELDS_NULL (361 ) /* default: false */

mit der sich die Logik auf das ursprüngliche Verhalten zurückstellen lässt.

Mit sonnigen Grüßen aus Konstanz

Vielen Dank für die rasche Antwort.
Das ist genau das, was ich gesucht habe.

Trotzdem noch eine Frage:
Wie setze ich die Option in .NET (4.7.1)?

Danke aus der ebenfalls sonnigen Schweiz…

Hi Stefan, deine LL Instanz hat eine Core und darin die LlSetOption Methode, dort kannst du

LL.Core.LlSetOption(361, 1); 

setzen.

1 Like

Nochmals Danke.
Ich werde es gleich ausprobieren…