CrystalReportsでカスタムIsNull関数を作成しようとしています。この関数は、MS SQLServerのIsNull関数と同じように機能する必要があります。フィールドを指定したいのですが、フィールドがnullの場合は、指定した値で返される必要があります。
IsNull({myField},0) or
IsNull({myField},'Hello World')
数値フィールド用に別の関数を作成し、テキストフィールド用に別の関数を作成する必要があることに気付きました。また、Crystalでは、カスタム関数内での標準関数の使用が許可されていないこともわかりました。たとえば、ISNULL
関数:
Function(NumberVar param, Numbervar setter)
IF ISNULL(param) THEN setter ELSE param
そして
Function(StringVar param, StringVar setter)
IF param = NULL THEN setter ELSE param
Crystalでこのような関数を作成し、カスタム関数内のISNULL
を回避する方法を知っている人はいますか?
Null値をカスタム関数に渡すことはできないため、クリスタルのisnull
関数をカスタム関数内で使用するのは無意味です。唯一のオプションは次のように書くことです...
if isnull({myField}) then 0 else {myField}
この問題を見つけました。数式エディタで、ヘッダーに次のことを示すドロップダウンがあります。
2番目のものを選択します(nullのデフォルト値)
私は同じ振る舞いに遭遇しましたが、これについての文書化された理由はまだわかりません。
SQL式を使用することをお勧めします。
//{%myField}
(
ISNULL({myField},'Hello World')
)
これは私のために働いた:
if (isnull({dbvalue}) or ({dbvalue} ='')) then
"Display the required text"
else
{dbvalue}