Programming Tutorials

Using Parameters in JasperReports

By: MakeItSimple. in Java Tutorials on 2008-09-02  

Parameters are object references that are passed-in to the report filling operations. They are very useful for passing to the report engine data that it can not normally find in its data source. 

For example, we could pass to the report engine the name of the user that has launched the report filling operation, if we want it to appear on the report, or we could dynamically change the title of our report. 

An import aspect is the use of report parameters in the query string of the report, in order to be able to further customize the data set retrieved from the database. Those parameters could act like dynamic filters in the query that supplies data for the report. 

Declaring a parameter in a report design is very simple and it requires specifying only its name and its class: 

<parameter name="ReportTitle" class="java.lang.String"/>
<parameter name="MaxOrderID" class="java.lang.Integer"/>
<parameter name="SummaryImage" class="java.awt.Image"/>

There are two possible ways to use parameters in the query: 
1. The parameters are used like normal java.sql.PreparedStatement parameters using the following syntax: 

2. Sometimes is useful to use parameters to dynamically modify portions of the SQL query or to pass the entire SQL query as a parameter to the report filling routines. In such a case, the syntax differs a little, like in the following example: 

SELECT * FROM Orders ORDER BY $P!{OrderByClause}  

There are also the following built-in system parameters, ready to use in expressions:



This parameter will contain a map with all user defined and built-in parameters.



A user supplied java.sql.Connection used for JDBC datasources.



A user supplied instance of JRDataSource representing either one of the built-in data source types or a user-defined one.



An integer allowing users to limit the datasource size.



A JRAbstractScriptlet containing an instance of the report scriptlet provided by the user.



A java.util.Locale instance containing the resource bundle desired locale.



The java.util.ResourceBundle containing localized messages.



A java.util.TimeZone instance to use for date formatting.



The net.sf.jasperreports.engine.JRVirtualizer object to be used for page virtualization.



A java.lang.ClassLoader instance to be used during the report filling process to load resources such as images, fonts and subreport templates.


Add Comment

* Required information


No comments yet. Be the first!

Most Viewed Articles (in Java )

Latest Articles (in Java)