Reputation: 29
I generated PDF report using ireport designer tool. Upto here it is fine.
My question is :
If there is no data in the database then it is showing blank pdf page. At this time how can i show "No data found for this request" in pdf?
Upvotes: 0
Views: 461
Reputation: 8986
If you want to show none of the content of your report when there is no data (no title, headers, footers, etc.) then you should add a noData
band to your report and put the message there. Then change the whenNoDataType
report parameter to NoDataSection
.
From the JasperReports Ultimate Guide:
If the
<noData>
section is defined in the report template, and if the data source is empty, then the<noData>
section will be the only one taken into account at fill time
Example:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
name="report1"
whenNoDataType="NoDataSection">
<pageHeader>
<band height="20">
<staticText>
<reportElement x="0" y="0" width="100" height="20"/>
<text><![CDATA[Page Header]]></text>
</staticText>
</band>
</pageHeader>
<detail>
<band height="20">
<staticText>
<reportElement x="0" y="0" width="100" height="20"/>
<text><![CDATA[Detail]]></text>
</staticText>
</band>
</detail>
<pageFooter>
<band height="20">
<staticText>
<reportElement x="0" y="0" width="100" height="20"/>
<text><![CDATA[Page Footer]]></text>
</staticText>
</band>
</pageFooter>
<noData>
<band height="20">
<staticText>
<reportElement x="0" y="0" width="555" height="20"/>
<text><![CDATA[No data found for this request]]></text>
</staticText>
</band>
</noData>
</jasperReport>
Upvotes: 0
Reputation: 5868
There is a property of the template WhenNoDataType.
Just set it to WhenNoDataType: AllSectionsNoDetail.
This will have the template(static fields) but no dynamic data from database.
If you just want to print some message than you will have to change the design up a bit. You would need to place a condition at the beginning of your report to check if data is coming from database, and act accordingly.
Upvotes: 1