JasperReport&填充组件

时间:2011-11-09 19:14:12

标签: java reporting jasper-reports ireport

JasperReports新手在这里。我已经阅读了tutorialquick reference,并阅读了很多关于JR的文章,现在已经和 iReport 报告设计师一起玩了一天左右

我认为我窒息的最后一个主要概念集与图表组件及其数据之间的关系有关。尽管很容易找到每种定义,但似乎很少有实际文档显示它们在一个有意义的应用程序中如何相互关联。

  • 报告字段
  • 报告参数
  • 报告变量
  • 数据集

通过使用iReport,似乎字段,参数和变量可以存在于报表级别,也可以放在数据集中。但是我对什么是场与参数与变量的理解非常模糊,而且我对它们与数据集的关系的理解也非常不稳定。

使用数据集作为一个小小的障碍,我很难看到“穿过树林”,图表组件(如饼图,表格等)如何被“喂”或“注入”他们的数据

Soo ......我想到了一个例子,如果回答的话,我会把所有东西都绑在一起(我相信!)。假设我有两个图表组件,一个文本字段和一个饼图。我希望饼图显示在文本字段下方,如下所示:

The author of this report is: <value supplied by the data source>

<pie chart here>

所以,在“填充时间”(我认为我正在正确地使用它...)时,报告将被“填充”报告作者的姓名(一个字符串),以及由2个饼图组成的饼图:1个值为75的切片,标签/键为“Eloi”,第2个切片的值为25,标签/键为“Morlocks”。如果我没有在这里使用正确的JR术语,我想要实现的是一个带有两个切片的填充时间饼图:“Eloi”切片消耗75%的图表,“Morlocks”切片消耗25%的图表。

如果有人可以解释或提供代码(Java / JRXML)片段以了解如何设置此类图表,我认为它将有助于连接所有点并帮助我了解组件如何填充数据。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

将参数视为最终用户在运行时提供给报表的内容。例如,您提供将在查询中使用的StartDate和EndDate。您感兴趣的开始日期是您知道的,它不是由数据源提供的。 (这个想法有不同的变化:也许你的应用程序根据你的登录信息了解你的情况,并将它们作为参数提供。但同样,这些是在报告执行之前已知的事情。)

将字段视为从数据源返回的数据。这是你想要学习的东西。例如,您运行如下查询:

select political_group, gullibility from mytable where the_date > $P{StartDate}

据推测,您可以为StartDate输入值'802701',然后得到如下结果:

$F{political_group} $F{gullibility}
Eloi                75
Morlock             25

将变量视为操纵此原始数据的一种方式。他们可以计算总计和小计以及逐行计算,如字符串操作或更复杂的事情,如运行总计。

看一下我几年前发布的饼图报告:http://mdahlman.wordpress.com/2009/05/02/limiting-pie-pieces/

它有你想要的主要想法。我将标题直接放入图表而不是单独的字段。那将是一个非常简单的变化。同样,您可以将标题更改为“此报告的作者是:$ P {TheAuthor}”,然后在运行时将该参数传递给报告。

也可以使用报告标题中的字段而不是参数。但通常它没有意义。这些字段在数据集中有许多值。哪一个属于标题?在上面的案例中,“Eloi”和“Morlock”是字段,它们在报告标题中确实没有意义。 (当然,您可以想象特殊情况。您可以将所有political_group值连接成一个字符串并将其放在报告标题中。但在绝大多数情况下,这都是不合理的。)

祝你好运。