如何在JRXML中使用多个查询构建数据源?

时间:2012-06-29 09:58:19

标签: java jasper-reports

我需要知道如何在jasper报告中动态生成报告?在我的情况下,表具有id,name,design作为字段。我需要在一个jrxml文件中操作五个不同的查询。

首先选择整个表格。 第二个将仅选择id,name。 仅第三个名字。

在这里,我成功地选择了整个表格,但我对如何运行其余表格感到困惑。

2 个答案:

答案 0 :(得分:0)

您有3个选择:

1)您可以将所有5个查询合并为一个查询。这可能很难(有时是不可能的),但应首先尝试。一般而言,报表中的数据会以某种方式与您的报表中的其他数据相关联。将完全不相关的数据放在报表中的行中似乎毫无意义。所以你应该能够做到这一点。

这是您最好的选择。您应该能够将这5个查询组成一个查询。它将使您的生活更轻松,维护更轻松,更不用说初始设计更容易了。您将能够在一个jrxml中完成所有操作。您可以在jrxml中对所有内容进行分组,格式化和排序等。所以仔细研究一下。如果您遇到问题,请在此网站上创建一个新问题,提供查询和表格说明,我打赌一些SQL专家会帮您解决。

2)您可以放弃将查询放在JRXML中,而是通过包含所有数据的java传递数据源。查看Using a POJO as an IReport Datasouce以获取有关如何使用的示例可以这样做。

如果你不能做上面的选项1,这不是一个可怕的选择。这是一个不错的折衷方案,但您仍在运行多个查询来构建数据源,这将对实际运行报告所需的时间产生负面影响。

3)您可以使用子报告,以便每个报告都有一个查询,您可以使用上一个查询的结果来运行下一个查询。这最终会给您一棵树报告的层次结构,在您的情况下意味着创建5个报告。

我认为这不是一个好主意,但只是想确保你知道这是一个选择。设置过于复杂,难以维护。

答案 1 :(得分:0)

除了jschoen提供的三个选项外,还有第四个选项:

4)使用子数据集在一个报告中运行多个查询。您可以看到Multiple queries in a single jasper document的答案,了解如何执行此操作。