ireport 5.6教程之参数(Parameters)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ireport 5.6教程之参数(Parameters) Parameters通常是用来在打印的时候从程序里传值到报表里。也就是说parameters通常的是起参数传递的作用。他们可以被用在一些特定的场合(比如应用中SQL查询的条件),如report中任何一个需要从外部传入的变量等(如一个Image对象所包括的char或报表title的字符串)。

和使用Fields一样,parameters也需要在创建的时候定义它的数据类型。parameters的数据类型是标准的java的Object。

在ireport中,Parameters的机制是允许用户通过应用程序传递参数致报表当中。在jasperreort中的某个对象中的expression可以通过下面的语法来访问一个当前ireport中存在的parameter:

$P{parameter name}。

如果应用程序没有为报表中定义的parameter赋值,那么parameter将会取我们在定义它的时候设置的default value的值。parameters是一个Java Object,所以如果它的类型是Object类型,我们在其default value里写下面的表达式就是错误的:

0.123

你必须要创建一个Object,如:

New Double(0.123)

这种写法就是正确的。

在查询中使用Parameters

Parameters可以用来做SQL查询的条件参数的传递。如果你想根据部门编号(dept_id)得到客户的详细信息(设计的时候我们是不知道这个部门编号的具体值是多少的).此时我们可以这样组织查询语句:

select*from employee where dept_id=$P{deptId}

此时SQL查询引擎将会采用PreparedStatement来处理传入的deptId值以此作为查询条件参数。

如果你想直接通过parameter值来作为SQL语句的一部分,那么你可以使用下面的特殊语法:$P!{parameter name}。这种写法允许你在查询时用parameter的值来替换parameter name。例如,如果我们有一个参数名为MyWhere其值为:where dept_id=D11,查询写法如下:

Select*from employee$P!{MyWhere}

查询时实际提交的字符串是:

Select*from employee where dept_id=D11

在程序里使用Parameters

在应用程序里,如果想把某个值传递到我们的报表中parameters时,我们可以把相关的值放入一个扩展java.util.Map接口类里,然后传入到ireport里。如下面的代码:

...

Map hm=new HashMap();

...

JasperPrint print=

JasperFillManager.fillReport(fileName,hm,new

JREmptyDataSource());

fillReport是一个关键的方法,它允许你通过一个文件名,一个参数集来传递到我们要调用的报表当中。例-如通过下面的处理方法我们可以让一个处部的传入值作为我们报表的title。

下面的是一个例子:

a).声明一个parameter.这个parameter是ng.String类型,名字为:name_report:

b).将这个parameter拖到page中的title band.修改上面的程序代码如下:

HashMap hm=new HashMap();

hm.put(“name_report”,”report title”);

...

JasperPrint print=

JasperFillManager.fillReport(fileName,hm,

new JREmptyDataSource());

运行时效果如下:

一般情况下,我们不需要为报表中的每一个parameters传递一个值,除非某一个parameter一定要从外部程序传入时我们才需为一个parameter设

置一个值。如果一个parameter外部门程序没有为其赋值那么ireport将使用Default Value Expression来对一个parameter进行初始化,如果连Default Value Expression没有设置那么它的值就是null。

事实上,对于一个parameters我们不仅仅可以传递一个

String,Integer,Boolean等java中小的对象,同时我们还可以利用parameters 来传递一些足够大足够复杂的对象,比如一个图像(java.awt.Image),或者通过一个parameters来为一个为子报表提供的datasource连接等。在用Map类型传递参数时我们要注意传递的参数要与report里的parameters类型保持一致,否则会抛出ClassCastException。

ireport内嵌的Parameters:

ireport提供了一些内建的parameters,这些parameters对于用户来说是只读的。内嵌的parameters列表如下:

参数名说明

REPORT_PARAM ETERS_MAP

它是一个java.util.Map类型的对象,可以通过它来传给填充报表去填充报表里所有的parameters,在这个参数里还包含用户定义的parameters.

REPORT_CONNE CTION 一个JDBC的Connection参数,报表可以根据传入的JDBC Connection来获到相应的数据

REPORT_DATAS OURCE 为报表中的Connection提供一个DataSource。外部传入的时候类型也要是DataSource类型

相关文档
最新文档