我需要知道如何在 jasper 报告中动态生成报告?在我的情况下,表有 id、name、design 作为字段。我需要在一个 jrxml 文件中处理五个不同的查询。
第一个将选择整个表。第二个将选择 id,name 单独。仅第三个名字。
在这里,我成功地选择了整个表,但对如何运行其余表感到困惑。
我需要知道如何在 jasper 报告中动态生成报告?在我的情况下,表有 id、name、design 作为字段。我需要在一个 jrxml 文件中处理五个不同的查询。
第一个将选择整个表。第二个将选择 id,name 单独。仅第三个名字。
在这里,我成功地选择了整个表,但对如何运行其余表感到困惑。
除了 jschoen 提出的三个选项之外,还有第四个选项:
4)使用子数据集在一份报告中运行多个查询。您可以在单个 jasper 文档中查看多个查询的答案,以了解如何执行此操作。
您有 3 个选择:
1)您可以将所有 5 个查询合并为一个查询。这可能很难(有时不可能),但应该先尝试。一般来说,您报告中的数据在某种程度上与您报告的其他数据相关。将完全不相关的数据按行放在报告中似乎毫无意义。所以你应该能够做到这一点。
这是您最好的选择。您应该能够将这 5 个查询合并为一个查询。它将使您的生活更轻松,维护更轻松,更不用说初始设计更容易了。您将能够在单个 jrxml 中完成所有操作。您可以在 jrxml 中进行分组、格式化和排序等。所以仔细看看这个。如果您遇到问题,请在此站点上创建一个新问题,提供查询和表格描述,我敢打赌这里的一些 SQL 专家会帮助您。
2)您可以完全放弃将查询放在 JRXML 中,而是通过包含所有数据的 java 传递数据源。查看Using a POJO as an IReport Datasouce了解如何执行此操作的示例。
如果您不能执行上面的选项 1,这并不是一个可怕的选项。这是一个不错的折衷方案,但您仍在运行多个查询来构建数据源,这将对实际运行报告所需的时间产生负面影响。
3)您可以使用子报表,这样每个报表都有一个查询,您可以使用上一个查询的结果来运行下一个。这最终会为您提供报告的树形层次结构,在您的情况下,这意味着创建 5 个报告。
在您的情况下,我认为这不是一个好主意,但只是想确保您知道这是一种选择。设置将过于复杂,并且难以维护。