Java 如何在JRXML中构建包含多个查询的数据源?

Java 如何在JRXML中构建包含多个查询的数据源?,java,jasper-reports,Java,Jasper Reports,我需要知道如何在jasper reports中动态生成报告?在我的例子中,表具有id、名称、设计等字段。我需要在一个jrxml文件中处理五个不同的查询 第一个将选择整个表。 第二个将只选择id和name。 只有第三个名字 在这里,我成功地选择了整个表,但我对如何运行其余的表感到困惑。您有3个选择: 1) 您可以将所有5个查询组合成一个查询。这可能很难(有时不可能)做到,但应该先尝试。一般来说,报告中的数据在某种程度上与报告中的其他数据相关。在报告中,将完全不相关的数据按行组合在一起似乎毫无意义。

我需要知道如何在jasper reports中动态生成报告?在我的例子中,表具有id、名称、设计等字段。我需要在一个jrxml文件中处理五个不同的查询

第一个将选择整个表。 第二个将只选择id和name。 只有第三个名字

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

您有3个选择:

1) 您可以将所有5个查询组合成一个查询。这可能很难(有时不可能)做到,但应该先尝试。一般来说,报告中的数据在某种程度上与报告中的其他数据相关。在报告中,将完全不相关的数据按行组合在一起似乎毫无意义。所以你应该能够做到这一点

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

2) 您可以完全放弃将查询放在JRXML中,而是通过java传入包含所有数据的数据源。查看一个示例,了解如何做到这一点

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

3) 您可以使用子报告,这样每个报告都有一个查询,您可以使用上一个查询的结果来运行下一个查询。这将为您提供一个报告的树层次结构,在您的情况下,这意味着创建5个报告


我不认为这是一个好主意在你的情况下,但只是想确保你知道这是一个选择。它的设置将过于复杂,并且难以维护。

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

4) 使用子数据集在一个报表中运行多个查询。您可以查看的答案以了解如何执行此操作