web-dev-qa-db-ja.com

JasperReportsでprintWhenExpressionを使用する方法

JasperReportsのprintWhenExpressionの使い方を教えてもらえますか?

15
Malathi

ブール値に関連するエラーがありますか?

プリミティブ型の代わりにブール値を使用する必要があるためです。

そう:

_$F{mesure} != "PH"
($F{userfd4}).equals("1") ? true : false 
_

_cannot cast from boolean to Boolean_を与えます。

_( $F{mesure}.startsWith("PH") ? Boolean.TRUE:Boolean.FALSE ) 
($F{userfd4}).equals("1") ? Boolean.TRUE : Boolean.FALSE  
_

正しいでしょう。

こちらもご覧ください


2015年11月の更新(7年後)

Petter Friberg 指摘 コメント内

jasper report 6.0では、これは必要ありません:
booleanまたはBooleanのいずれかを返すことができます。$F{fieldName}.equals("hello")のような単純な式が機能します。


そのコマンドのデモは _demo/samples/tableofcontents/reports/TocPart.jrxml_ で見ることができます

_<reportElement style="Sans_Bold" positionType="Float" x="50" y="0" width="100" height="15" isRemoveLineWhenBlank="true" uuid="db8b68c6-4430-4199-8967-3ab5c077cb56">
    <property name="local_mesure_unitx" value="pixel"/>
    <property name="com.jaspersoft.studio.unit.x" value="px"/>
    <printWhenExpression><![CDATA[$F{level} == 1]]></printWhenExpression>
</reportElement>
_
20
VonC

もう一方のポスターは、使い方の技術的な詳細をうまく説明しているので、それが役立つと思われる状況を説明しようと思います。

基本的に、ブール式に基づいてセルの内容を表示または非表示にすることができます。たとえば、その人が18歳を超えている場合にのみその人の名前を表示し、次に次のようなprintwhenexpressionを使用して名前フィールドに表示したい場合があります。

$F{age} >= 18
5
Dónal

静的メソッド「Boolean.valueOf(booleanb)」を使用することもできます。これは「($ F {mesure} .startsWith( "PH")?Boolean.TRUE:Boolean.FALSE)」とまったく同じロジックを実行し、経験則としてホイールを再作成しないでください。

Boolean.valueOf($ F {mesure} .startsWith( "PH"))

Boolean.valueOf($ F {userfd4})。equals( "1"))

2
Justin

$ P {mesure} .equals( "200")は、追加の詳細なしで機能するはずです。条件が真の場合に印刷されます

1