web-dev-qa-db-ja.com

ジャスパーレポートでnull値を回避する方法

私のジャスパーレポートには、次のような式の値を持つフィールドがあります

$F{address_street1}+" "+$F{address_street2}+ " " +$F{address_state} + " "+$F{address_country}+ " "+$F{address_Zip}

私の問題は、ここのフィールドのいずれかがnullの場合、他のものとの間でnull値を取得することです

101 Main St****null****ILUnited States12345 

強調表示されたヌルに注意してください。それを避ける方法はありますか?

私はブール式を使用して特定のフィールドのヌル値をチェックし、それを空白に置き換えようとしましたが、うまくいかないようです。

28
Sachin Anand

プロパティisBlankWhenNullをtrueに設定します。

  • IReportで、フィールドが選択されている場合、[NULLの場合は空白]チェックボックスをオンにします。
  • Jasper jrxmlファイルの場合:<textField isBlankWhenNull="true">
40
krock

式では、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})
11
rogiller

jasperreports-functionsを使用でき、文字列値を出力する場合は、テキスト文字列または空の文字列を返す関数T()を使用します。

T($F{firstName})

6
panser

最初にこの問題を解決するには、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}
6
Anup Ghosh
($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})
3
Suresh Swami

以下を試してください:

$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}

または、レポートプロパティを設定します。リソースが不足している場合:タイプが空です

私の場合は両方とも機能します。

1
YOGESH C UGALE

レポート内のすべてのフィールドをチェックするオプション(Nullの場合は空白)を選択しても、フィールドにnullが表示される。そこで、レポート式を使用しました。

すべてのレポート変数は文字列なので、nullの使用を確認するには:

$F{address_stree2}.equals("null") 
1
Padma Kannan

テキストフィールドの高さを1に設定することができます。オーバーフローフラグをtrueに設定し、nullの場合は空白に設定して、フィールド値が空白のときに空白を残さないようにします。

0
Vinita Shah

Ecliple + jasper softReportsで作業している場合は、手順1.でフィールド+rightclickを選択し、showPropertiesオプション2.TextFieldを選択BlankWhenNull 3.Compile and Rebuild checkを選択します。

0
Raja

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に設定します

よろしく、

アンクシュ

0
Ankush Chhabra

フィールドが文字列の場合は、プロパティをオンにします(BLANK WHEN NULL)。それ以外の場合は、三項演算子を使用します

null印刷の場合、他の何かがフィールドを印刷します。

field==null?whatever:field 
field=null?false:true

これらは両方とも問題を解決するはずです。

0
Majid Ali Khan

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}に渡さない場合、結果は次のようになります。

アブドゥルカリク

よろしくお願いします、