Print a field when certain value is not present Jasper reports - jasper-reports

I am creating a JasperReports's report using iReport. I have a date field where once instance is 01-JAN-1900. I need any time the date field has this value then null value is printed. I have tried this:
<textField pattern="dd-MMM-yyyy" isBlankWhenNull="true">
<reportElement uuid="4dd05795-8363-4cf3-ad30-239aac3a086f" x="3" y="0" width="63" height="15">
<printWhenExpression><![CDATA[$F{TRAN_DATE} != "01-JAN-1900"]]></printWhenExpression>
</reportElement>
<textElement>
<font size="9"/>
</textElement>
<textFieldExpression><![CDATA[$F{TRAN_DATE}]]></textFieldExpression>
</textField>
But the value is still getting printed. How do I achieve this?

You cannot compare dissimilar types. Drop the String literal and compare datetime types.

If your field $F{TRAN_DATE} is in java.util.Date type, change it to java.lang.String and your condition should work.

Related

Jasper report XLS export shows value as String instead of Currency

I have a similar issue as described here but with the value type instead of value pattern. I have a value called 'Balance'
<parameter name="Balance" class="java.lang.String"/>
and corresponding field
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement x="400" y="55" width="117" height="7"/>
<textElement textAlignment="Right" verticalAlignment="Top">
<font size="7" isBold="true" pdfFontName="Helvetica" isPdfEmbedded="false"/>
</textElement>
<textFieldExpression><![CDATA[( $P{Balance}.equals(null) ? "" : $P{Balance} )]]></textFieldExpression>
</textField>
When I export my Jasper report as XLS, 'Balance' value comes in correct pattern (ie. $400.20) but Excel consider this as a String instead of Currency.
Any idea how to fix it would be much appreciated.

Text truncated on JasperReports

I have a JasperReports's report within an application that is truncating text and I am unsure how to get it to display the full name.
The code snippet below shows that I have included isStretchWithOverflow="true":
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement x="353" y="0" width="79" height="30"/>
<textElement textAlignment="Right"/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{acname}]]></textFieldExpression>
</textField>
The JasperReports's image shows incorrect values. One of these should read: 'Double Time Pay - Bill Regular' and the other 'Double Time Pay - Bill Overtime'.

Add group of text fields but show only one group field which has data in Jasper

I have two groups text fields.
1st group (Stock Code) is :
$F{VW_STOCKOPNAME_S1_KL}
$F{VW_STOCKOPNAME_S2_JB}
$F{VW_STOCKOPNAME_S3_NB}
$F{VW_STOCKOPNAME_S4_SB}
2nd group (Asset Code) is :
$F{VW_STOCKOPNAME_A1_GOLONGAN}
$F{VW_STOCKOPNAME_A2_BIDANG}
$F{VW_STOCKOPNAME_A3_KELOMPOK}
$F{VW_STOCKOPNAME_A4_SUBKELOMPOK}
$F{VW_STOCKOPNAME_A5_SUBSUBKEL}
and I have field called Product :
$F{VW_STOCKOPNAME_PRODUCT}
Each product has either Asset Code / Stock Code.
If a product has Asset Code, then Stock Code field is automatically blank,
it works the other way around.
Code || Product
----------------------
1-2-1-1 || Stock Goods
0-2-3-1 || Asset Goods
How can I make it automatically show each product with matching code?
for all the textfields in group add property "Blank When Null"(isBlankWhenNull="true")
update: Added PrintWhenExpression
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement x="143" y="29" width="260" height="20" isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[($F{VW_STOCKOPNAME_S1_KL}!=null && $F{VW_STOCKOPNAME_S2_JB}!=null && $F{VW_STOCKOPNAME_S3_NB}!=null && $F{VW_STOCKOPNAME_S4_SB}!=null)]]></printWhenExpression>
</reportElement>
<box leftPadding="2"/>
<textElement verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{VW_STOCKOPNAME_S1_KL}]]></textFieldExpression>
or you can also use print when expression

Report's text field's "stretch with over flow" option add empty row in PDF export

I have set the "Stretch With Overflow" option True to some text fields , when the data over flow in the jasper viewer is working correctly, the text is on 2 rows but in PDF document the second row is empty: it just adds an empty row.
Exemple xml code :
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement positionType="Float" stretchType="RelativeToTallestObject" x="165" y="0" width="35" height="10" isRemoveLineWhenBlank="true" uuid="a5d7ff35-a2dc-480e-80a7-9246d8618b27"/>
<textElement textAlignment="Left">
<font fontName="Futura Std Light" size="7"/>
<paragraph lineSpacing="Single"/>
</textElement>
<textFieldExpression><![CDATA[$F{montant} == null && $F{numeroAppelant} != null ? $F{numeroAppele}.toString():
$F{duree} != null ? $F{duree}.toString() :
$F{volumeKo} != null ? null : $F{montant}.toString()]]>
</textFieldExpression>
I found the solution,
I just set the line spacing property to 1.5 !
I found that when I change the font, it works wright. The problem that the same font on another report works fine with stretch with overflow option.

Null condition checking in report for float

I am using iReport designer for designing report. Here data type of column data is real. In report corresponding data type is Float.
If the float value is empty or null i need to display that as a blank value.
The textField's attribute expression isBlankWhenNull="true" is not working for Float
Here is my code
<textField isBlankWhenNull="true">
<reportElement x="342" y="314" width="78" height="18"/>
<textElement/>
<textFieldExpression class="java.lang.Float"><![CDATA[$F{ws1}]]></textFieldExpression>
</textField>
I'm using iReport 3.7.6.
The result of my report is:
The cells with 0.0 should be blank.