私のジャスパーレポートには、次のような式の値を持つフィールドがあります
$F{address_street1}+" "+$F{address_street2}+ " " +$F{address_state} + " "+$F{address_country}+ " "+$F{address_Zip}
私の問題は、ここのフィールドのいずれかがnullの場合、他のものとの間でnull値を取得することです
101 Main St****null****ILUnited States12345
強調表示されたヌルに注意してください。それを避ける方法はありますか?
私はブール式を使用して特定のフィールドのヌル値をチェックし、それを空白に置き換えようとしましたが、うまくいかないようです。
プロパティisBlankWhenNull
をtrueに設定します。
<textField isBlankWhenNull="true">
式では、Javaコードを使用できます。
したがって、必要なのは、フィールドの値がnullであるかどうかをチェックしてから、空の文字列に置き換えることです。
$F{address_street1} == null ? "" : $F{address_street1}+ " " +
$F{address_street2} == null ? "" : $F{address_street2}+ " " +
$F{address_state} == null ? "" : $F{address_state} + " " +
$F{address_country} == null ? "" : $F{address_country}+ " " +
$F{address_Zip} == null ? "" : $F{address_Zip}
@Vash、はい、私はあなたが括弧の中に各式を入れて、各式が他の式から独立するようにしたいと思うかもしれないと思うことを除いて私がすることです。このような:
($F{address_street1} == null ? "" : $F{address_street1}+ " ") +
($F{address_street2} == null ? "" : $F{address_street2}+ " ") +
($F{address_state} == null ? "" : $F{address_state} + " ") +
($F{address_country} == null ? "" : $F{address_country}+ " ") +
($F{address_Zip} == null ? "" : $F{address_Zip})
jasperreports-functionsを使用でき、文字列値を出力する場合は、テキスト文字列または空の文字列を返す関数T()を使用します。
T($F{firstName})
最初にこの問題を解決するには、IReportのnullチェックボックスのフィールドプロパティ、またはJasper jrxmlファイルの場合は<textField isBlankWhenNull="true">
をチェックします。
それから私はtwo wayを見つけてこれを解決しました。以下で説明する方法を選択してください。
1。このような式構文を使用する
$F{variableName}.equals( "0" )? "" : $F{variableName}
次のようなコードを使用できます
$F{address_street1}.equals("0")? "" : $F{address_street1} + " " +
$F{address_street2}.equals("0")? "" : $F{address_street2} + " " +
$F{address_state}.equals("0")? "" : $F{address_state} + " " +
$F{address_country}.equals("0")? "" : $F{address_country} + " " +
$F{address_Zip}.equals("0")? "" : $F{address_Zip}
2.次のような式構文を使用します
$F{variableName}== null ? "" : $F{variableName}
次のようなコードを使用できます
$F{address_street1} == null ? "" : $F{address_street1} + " " +
$F{address_street2} == null ? "" : $F{address_street2} + " " +
$F{address_state} == null ? "" : $F{address_state} + " " +
$F{address_country} == null ? "" : $F{address_country} + " " +
$F{address_Zip} == null ? "" : $F{address_Zip}
($F{address_street1}.equals(null) ? "" : $F{address_street1}+ " ") +
($F{address_street2}.equals(null)l ? "" : $F{address_street2}+ " ") +
($F{address_state}.equals(null) ? "" : $F{address_state} + " ") +
($F{address_country}.equals(null) ? "" : $F{address_country}+ " ") +
($F{address_Zip} .equals(null) ? "" : $F{address_Zip})
以下を試してください:
$F{address_street1}.toString() == null ? "" : $F{address_street1}+ " " +
$F{address_street2}.toString() == null ? "" : $F{address_street2}+ " " +
$F{address_state}.toString() == null ? "" : $F{address_state} + " " +
$F{address_country}.toString() == null ? "" : $F{address_country}+ " " +
$F{address_Zip}.toString() == null ? "" : $F{address_Zip}
または、レポートプロパティを設定します。リソースが不足している場合:タイプが空です
私の場合は両方とも機能します。
レポート内のすべてのフィールドをチェックするオプション(Nullの場合は空白)を選択しても、フィールドにnullが表示される。そこで、レポート式を使用しました。
すべてのレポート変数は文字列なので、nullの使用を確認するには:
$F{address_stree2}.equals("null")
テキストフィールドの高さを1に設定することができます。オーバーフローフラグをtrueに設定し、nullの場合は空白に設定して、フィールド値が空白のときに空白を残さないようにします。
Ecliple + jasper softReportsで作業している場合は、手順1.でフィールド+rightclickを選択し、showPropertiesオプション2.TextFieldを選択BlankWhenNull 3.Compile and Rebuild checkを選択します。
Javaコードを書くことができます
package com.xyz
Class ReportUtil
{
public static String getMyString (String str1 , String str2)
{
if((str1!=null) && (str2!=null))
return str1 + " " + str2 ;
else if str1==null
return str2 ;
return str1 ;
}
}
JRXMLでは、テキストボックスで次の式を使用できます
com.xyx.ReportUtil.getMyString ($F{firstName},$F{lastName})
「nullの場合は空白」プロパティをtrueに設定します
よろしく、
アンクシュ
フィールドが文字列の場合は、プロパティをオンにします(BLANK WHEN NULL)。それ以外の場合は、三項演算子を使用します
null印刷の場合、他の何かがフィールドを印刷します。
field==null?whatever:field
field=null?false:true
これらは両方とも問題を解決するはずです。
nullパラメータがある場合、出力にnullを表示したくないという同様のケースがあります
i式エディターでT($P{city})
を使用します。パラメーターを渡さなかった場合はempty stringと評価されます
T()値が文字列の場合はテキスト文字列を返し、そうでない場合は空の文字列を返します
使用例:
$P{name} + " " + (T($P{city}).isEmpty() ? "" : " from " )+ (T($P{city}).isEmpty() ? "" : "\"" + T($P{city}) + "\"")
パラメータを$ P {city}に渡すと
結果は次のとおりです。
「リヤド」のabdulkahliq
パラメータを$ P {city}に渡さない場合、結果は次のようになります。
アブドゥルカリク
よろしくお願いします、