Problem mit SetVar()

Hallo zusammen

Ich verwende in einem Gruppenkopf für eine Spalte folgende Darstellungsbedingung:

.not. IsNullOrEmpty(SetVar(“Hotel_for_group”, Select_Cons(“…”), true), true)

Select_Cons ist eine Designer-Funktion, die ich selber registriert habe. Diese hat als ResultType = LLParamType.All gesetzt.

Mein PRoblem ist nun, dass obere Bedingung immer true liefert - auch wenn meine Function Select_Cons() als Resultat null oder “” zurückliefert.

Kann mir jemand weiterhelfen, was ich hier falsch mache? Vielen Dank.

Viele Grüsse
Thomas

Ich konnte ein ähnliches Verhalten reproduzieren, das aber nur auftritt, wenn ich bei IsNullOrEmpty den zweiten Parameter explizit mit true angebe. Ohne den zweiten Parameter funktioniert das bei mir. Ist das bei dir auch so, d. h. sehe ich den gleichen Effekt wie du :slight_smile:?

Hallo Jochen

Jep, bei mir den gleichen Effekt :slight_smile:
Wenn ich den zweiten Parameter auf false stelle, gehts.

Alles klar, das schaue ich mir gleich morgen mal an :+1:.

Könntest du einmal versuchen, in deiner Designerfunktion explizit den Rückgabewert auf das zu setzen, was auch wirklich geliefert wird? Die Funktion selber kann weiter LlParamType.All als Typ haben, aber im EvaluateFunction-Event sollte dann der korrekte, jeweils sich ergebende Typ gesetzt werden, bei meiner simplen Testfunktion sieht das so aus:

private void designerFunction2_EvaluateFunction(object sender, EvaluateFunctionEventArgs e)
{
    e.ResultValue = "";
    e.ResultType = LlParamType.String;
}

Hintergrund: andernfalls versucht List & Label beim Trimmen (was durch den zweiten Parameter ausgelöst wird), aus dem undefinierten Typen einen String zu machen und läuft zunächst in eine Zahlenkonvertierung, die “0” als neuen Inhalt ergibt. Durch das korrekte Setzen des Typs passiert das nicht.

Die Funktion kann in anderen Fällen auch Zahlen, Boolesche Werte usw. zurückliefern, sie muss aber über e.ResultType mitteilen, welcher Typ es denn jetzt tatsächlich ist. Wir könnten das natürlich gelegentlich noch verbessern und den Typen anhand des übergebenen Objekts direkt erkennen, für die schnelle Lösung sollte das oben aber genügen.

Hallo Jochen

Vielen Dank. Das scheint soweit zu funktionieren. In diesem Zusammenhang aber noch folgende Frage:
Was für einen Typ setze ich, wenn ich null zurückliefere? String?
Viele Grüsse, Thomas

Prima, das freut mich :slight_smile:. Zur weiteren Frage: Das dürfte fast egal sein, da die NULL-Evaluation vor der - hier - schädlichen Typenkonvertierung erfolgt. String wäre also auch in diesem Fall passend.

1 Like