+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Problem mit NULL values bei numerischem Tabellenfeld


(Guest) #1

Hallo Newsgroups,

ich habe eine Tabelle mit einer Spalte mit numerischem Inhalt. Das Problem ist, dass der Inhalt manchmal NULL werden kann, genauer “(NULL)” anstelle von “n. def.” - ich hoffe, das ist der richtige Weg auch für numerische NULL-Werte.

Das Problem ist allerdings nun, dass z.B. eine Funktion wie die folgende nicht funktioniert (col1 ist die numerische Spalte):
Cond(Not IsNull(col1), 0, Cond(col1 <= 10, 10, 20))

Wenn col1 NULL ist, erhalte ich die Meldung: “Argumentfehler: falscher Datentyp auf der rechten Seite von ‘<=’ (erwartet: String)”
…so als ob col1 nun einen String-Typ hat und deshalb rechts von “<=” auch ein String stehen muss!?

Was mache ich falsch oder welche Lösung gibt es? Z.B. eine Funktion, die gemeinsam Strings und Numbers in Numbers konvertiert? Oder vielleicht doch eine andere NULL-Initialisierung anstelle von “(NULL)” für “n. def.”?

Für jeden Tipp bin ich sehr dankbar!

Burkart


(Guest) #2

Macht Deine Formel Sinn?

Ich würde aus

Cond(Not IsNull(col1), 0, Cond(col1 <= 10, 10, 20))

eher

Cond(IsNull(col1), 0, Cond(col1 <= 10, 10, 20))

machen. Sonst ist der “else”-Zweig des Cond() immer ein
NULL-Vergleich, und anscheinend mag das der Formel-Parser nicht.

Paulchen

“Burkart Venzke” <bv1@g…> wrote in message
news:1115441520099434@combit.net

Hallo Newsgroups,

ich habe eine Tabelle mit einer Spalte mit numerischem Inhalt. Das
Problem ist, dass der Inhalt manchmal NULL werden kann, genauer
“(NULL)” anstelle von “n. def.” - ich hoffe, das ist der richtige
Weg auch für numerische NULL-Werte.

Das Problem ist allerdings nun, dass z.B. eine Funktion wie die
folgende nicht funktioniert (col1 ist die numerische Spalte):
Cond(Not IsNull(col1), 0, Cond(col1 <= 10, 10, 20))

Wenn col1 NULL ist, erhalte ich die Meldung: “Argumentfehler:
falscher Datentyp auf der rechten Seite von ‘<=’ (erwartet: String)”
…so als ob col1 nun einen String-Typ hat und deshalb rechts von
“<=” auch ein String stehen muss!?

Was mache ich falsch oder welche Lösung gibt es? Z.B. eine Funktion,
die gemeinsam Strings und Numbers in Numbers konvertiert? Oder
vielleicht doch eine andere NULL-Initialisierung anstelle von
“(NULL)” für “n. def.”?

Für jeden Tipp bin ich sehr dankbar!

Burkart


(Guest) #3

Die Lösung war, den NULL-Wert nicht einfach als “(NULL)”, sondern wirklich ein “numerisches NULL” zu übergeben wie in folgendem Statement:

fields.Add(key, “(NULL)”, LlFieldType.Numeric);

Der Extraparameter “LlFieldType.Numeric” war der entscheidende Punkt.

Gruß
Burkart