首页 > 解决方案 > Jasper 报告 - 获取重复记录

问题描述

我们正在探索 Jasper 报告以替换我们当前的报告引擎。我们的数据源将是 REST API,我们需要连接多个表。我遇到了用于 REST 的 CData JDBC 驱动程序,它似乎很适合这个目的。

我使用 CData 驱动程序创建了一个 JDBC 数据适配器,以 JSON 文件作为源,其中包含 2 个实体的数据 - 用户和帖子。然后我用这个数据适配器创建了一个报告来显示表格中的字段。数据是对以下两个实体进行连接查询的结果 -

SELECT users.name,users.username,users.email,users.website,posts.title FROM users join posts on users._id = posts.userId

以下是数据适配器配置 -

CDataDataAdapter.xml

<jdbcDataAdapter class="net.sf.jasperreports.data.jdbc.JdbcDataAdapterImpl">
   <name>CDataDataAdapter</name>
   <driver>cdata.jdbc.rest.RESTDriver</driver>
   <username />
   <password />
   <savePassword>true</savePassword>
   <url>jdbc:rest:Format="JSON";URI="D:/Documents/ToJasper/SampleJoinJson.json";XPath="/posts;/users";DataModel="Relational";JSONFormat="JSON";SSLServerCert="*";Logfile="D:\Documents\Tasks\ToJasper\cdata-driver.log";Verbosity="4";Location="D:\Documents\Tasks\ToJasper\Schema";FlattenObjects="False";GenerateSchemaFiles="OnStart";RowScanDepth="10";</url>
   <database />
   <serverAddress />
   <classpath>I:\Program Files\CData\lib\cdata.jdbc.rest.jar</classpath>
   <classpath>I:\Program Files\CData\lib\rssbus.jar</classpath>
</jdbcDataAdapter>

数据是在报告中提取的,但问题是它会重复。

在此处输入图像描述

该表在报告中重复了 5 次,4 次包含完整数据,1 次仅包含列标题。我不明白为什么,非常感谢任何帮助。

标签: jasper-reports

解决方案


我在这里得到了答案 - https://community.jaspersoft.com/questions/904196/same-detail-shown-multiple-times-page-and-multiple-pagesireports-well-jaspersoft

我在 Detail 带而不是 Summary 带中添加了表格组件。引用上面的答案-“您将表格和图表元素放在报告中的哪个位置?它们应该放在摘要部分,而不是详细信息部分。对于提取到报告中的每一行,都会调用 JR 报告详细信息带。如果您有 100 行,它将在详细信息带中显示信息 100 次,每个都包含该行的详细信息。表格和图表收集并汇总所有要显示的数据,应放置在摘要带中,因此它们只显示一次。 "


推荐阅读