在制作报表的过程中,子表是不可缺少的。今天就研究了一下制作子表的几种方式

一、连接数据库创建子表

以MySQL为例:

我的数据源数据库中的表

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb211emkwODAy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

1)iReport 创建父表

这个就是创建一个新的表格,只是记得数据源要选择mySQL ,其它的数据库数据源也一样的。

2)创建好之后,我们来创建子表,在组件面板找到iReport+jasperreport创建子表的几种方式(1)-LMLPHP拖动到父表其中的随意一个地方。我是放到detail里面的

它会产生一个向导

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb211emkwODAy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

一路next下去,仅仅是在最后一项选择use empty datasource,只是选其它的也行,待会我们还要改动

3)说一下原理:这样的方式就是利用每张报表都有的Parameters属性。在iReport4.6中。点击子报表在右側属性栏的最以下有两个属性

iReport+jasperreport创建子表的几种方式(1)-LMLPHP

一个是Parameters属性,他能够用来向子表传递数据接下来我会说到。第二个是Return Values非常明显这个能够用来将子表的数据返回,这个有时间再说。

以下子表属性进行设置:

有两个属性须要注意。一个是Subreport Expression用来指出子表的路径。这个新建之后一边不须要改动

iReport+jasperreport创建子表的几种方式(1)-LMLPHP

另外一个是connect type。这个要选择Use a connectionexpress 创建子表时候选择默认值。就是父连接,这个如今不是重点,只是在之后的方式中。这个是非常实用的

以下是重点:

设置点击Parameters打开这样一个窗体,点击add之后

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb211emkwODAy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

这就是你自己定义Parameters的地方。名字能够随便取,我的是例如以下设置:名字是id我要传递给子表的是数据库的ID字段,到此。我们对于主表这边的设置结束

iReport+jasperreport创建子表的几种方式(1)-LMLPHP

4)以下设置子表这里有一个关键点,就是在子表左边栏Parameters属性这边要新建一个Parameters,右键-》新建名字要和上面我们创建的一样而字段的类型要和从主表传递过来的字段一样:我定义的是id同一时候在我的数据库中定义的ID字段是String类型的。所以是以下设置注意。Default Value Expection一定要设置为“”字符,不然会报错,折腾了我好几个小时

iReport+jasperreport创建子表的几种方式(1)-LMLPHP

这个设置好之后打开数据连接窗体iReport+jasperreport创建子表的几种方式(1)-LMLPHP最左边的小button,打开后使用select语句只是要使用我们自己定义的字段,例如以下图,

你会发现出现了一些属性字段选择加入,就OK啦

iReport+jasperreport创建子表的几种方式(1)-LMLPHP

我的字段和子表设置

iReport+jasperreport创建子表的几种方式(1)-LMLPHP

以下是预览结果

iReport+jasperreport创建子表的几种方式(1)-LMLPHP

OK。创建子表的第一种方式就是这样,假设有须要留邮箱。我把源代码发过去。希望能共同学习

回家了,明天继续写

05-11 20:13