jasper-reports - 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 次仅包含列标题。我不明白为什么,非常感谢任何帮助。
解决方案
我在 Detail 带而不是 Summary 带中添加了表格组件。引用上面的答案-“您将表格和图表元素放在报告中的哪个位置?它们应该放在摘要部分,而不是详细信息部分。对于提取到报告中的每一行,都会调用 JR 报告详细信息带。如果您有 100 行,它将在详细信息带中显示信息 100 次,每个都包含该行的详细信息。表格和图表收集并汇总所有要显示的数据,应放置在摘要带中,因此它们只显示一次。 "
推荐阅读
- regex - 正则表达式删除 .htaccess RewriteRule 中的尾随字符串
- javascript - MongoDB + 异步等待的问题
- cordova - 如何在 InAppBrowser 中插入 Ionic 元素
- azure - 使用 ARM 模板将 Azure 成本分析数据导出为 CSV
- azure - 将打开与 Azure 中继的混合连接的 Windows 服务
- ios - 如何在 iOS 的下载过程中读取从 AWS S3 下载的文件的内容?
- jdbc - phoenix 查询服务器客户端太多 close_wait
- spring - Beans 可以在一个应用程序 IOC 之间共享到另一个应用程序 IOC 在 JVM 中运行吗?
- ios - 当应用程序为背景时如何添加图像
- python - pygame.sprite.Group.draw 不绘制图像