iReport专题学习之变量、栏05

来源:互联网 发布:微电影知乎 编辑:程序博客网 时间:2024/05/01 01:18

一、变量(Variables)

Variables是用来存储对某些字段计算后的结果,比如sum等,和fields、parameters一样,variables也是有数据类型的,你必须为一个Variables实例声明一个java类型,下图显示了如何创建一个新的Variables,下面我们来了解下每个字段的意思:

Variable name:variable的名称,我们可以在表达式中通过下面的方法来引用一个Variable.

$V{variable name}

Variable Class type:variable也可以使任意一个java类型,在下拉框里你可以看到大多数常用的类型,如java.lang.String等。

Calculation Type:一个计算类型可以用来计算结果,当一个预先定义的值是"nothing"时,那它的意思就是不做任何计算,ireport会根据指定的计算类型和从数据源获取的每一条记录计算出结果,然后去更改variables的值,做一个变量的计算意为着去执行一个表达式,如果计算类型为nothing,那么ireport将会根据variable expression为variable赋值,计算类型列举如下:

类型

说明

Nothing

不做任何计算

Count

对记录集数量进行循环累加(计算有多少条记录),这和sum不一样,sum的计算是针对数字的,会对数字进行累加操作。

Distinct Count

也是对计算有多少条记录的累加操作,只是在累加过程中会忽略已经出现的记录(比如某个字段的值已经出现后就不会再记录)

Sum

添加每一次表达式(这里的表达式只能是数字类型)迭代的结果到变量中

Average

它用算术的方法来计算表达式累加结果的平均值

Lowest

返回表达式最小值

Highest

返回表达式最大值

StandardDeviation

根据表达式所有值返回标准方差

Variance

返回表达式接收到的值的变化

System

不做任何计算并且表达式也是没有价值的,在这样的用例中,报表引擎仅仅保存内存中variable的最后的值。

Reset Type:重置类型,表示一个变量在什么时候做重置操作,reset类型如下:

类型名称

说明

None

任何时候都不做重置操作

Report

在报表创建的时候Variable才会对表达式进行初始化

Page

Variable的初始化在每一页都做一次reset操作

Column

Variable的初始化在每一列都做一次reset操作(这里的Column指的是report里的page的column,每个报表的column可以通过报表的Editàreport properties窗口进行修改)

Group

Variable的初始化在每一个组都做一次reset操作

Reset Group:如果group reset type被勾选,这里就要选择group名称(关于group可以参考后面的章节)

Increment:它指定当一个variable值被评估或者当你想要这个组采用类似于subtotals或者averages来计算,increment类型可以参考下面的的表。

incremenet Group:如果这个group的increment type被勾选它将指定这个组决定variable的increment。

custom incrementer Factory Class:指定一个实现了JRIncrementerFactory接口的java类名称,通常用来定义一些诸如sum之类的非数字类型的操作。

Variable Expression:它是一个java的expression,用来标示variable每一次迭代的值。

initial value Expression:它是一个为variable初始化时采用的expression。

内置的variables和parameters一样,ireport提供了一些内置的variables,这些变量是只读的,不能被用户修改,如下表所示:

Variable 名称

说明

PAGE_NUMBER

它包含当前页的页。

COLUMN_NUMBER

它包含当前的列数。

REPORT_COUNT

当前的记录数目

PAGE_COUNT

当前的页号

COLUMN_COUNT

当前的列号

<group name>_COUNT

在<group name>里的记录总数

二、栏

在本节中,我们将解释如何用iReport去管理bands,在前面的章节中我们介绍了报表的结构,在本章中我们将要看如何使用bands来划分报表。

2.1、栏(Bands)

iReport把一个报表划分成七个主要的bands和一个名为backgroup的band(一共是八个bands),每当我们添加一个group时就会有两个新band添加到报表当中:group footer bands和group header bands.

通过上图中,我们可以修改左边列表窗口中的任何一个band属性,比如它的高(以像素为单位)。Print When expression表示我们可以再这里输入一个表达式,这样我们可以根据表达式的值来控制当前的这个band是否输出,这里需要注意的是Print When expression里必须返回一个java.lang.Boolean类型的对象,如:New Boolean(true),上面的表达式说明这个bands总会被打印(如果我们什么都不输入这个就是默认值),在表达式里可以使用fields、variables、parameters,根据这个特性我们可以通过相关的fields、variables、parameters来灵活的控制当前的band是否可以输出,比如下面的代码:

($F{SALARY}.intValue()>4000?new Boolean(true):New Boolean(false));

上面的代码说明了当salary的值如果大于4000就输出当前的band否则就不输出当前的band.

把鼠标移到bands的边上我们可以鼠标拖拉的方式改变band的大小,以此来适配band里面的内容。

0 0
原创粉丝点击