Jasper 报告 - 获取重复记录
Jasper report - getting duplicate records
我们正在探索 Jasper 报告以取代我们当前的报告引擎。我们的数据源将是 REST API,我们将需要连接多个 table。我遇到了用于 REST 的 CData JDBC driver,它似乎很适合这个目的。
我使用 CData driver 创建了一个 JDBC 数据适配器,其中 JSON 文件作为源,其中包含 2 个实体的数据 - 用户和帖子。
然后我用这个数据适配器创建了一个报告来显示 table 中的字段。数据是对两个实体进行联合查询的结果,如下所示 -
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>
获取数据并在报告中呈现,但问题是它会重复。
table 在报告中重复了 5 次,4 次有完整数据,1 次只有列 headers。我不明白为什么,非常感谢任何帮助。
我在“详细信息”区域而不是“摘要”区域中添加了 table 组件。引用上面的答案-
“你把 table 和图表元素放在报告中的什么地方?它们应该放在摘要部分,而不是详细信息部分。JR 报告详细信息带会为提取到报告中的每一行调用。如果你有 100 行,它将在详细信息带中显示 100 次信息,每个信息包含该行的详细信息。表格和图表收集并汇总所有要显示的数据,应该放在摘要带中,因此它们只显示一次。"
我们正在探索 Jasper 报告以取代我们当前的报告引擎。我们的数据源将是 REST API,我们将需要连接多个 table。我遇到了用于 REST 的 CData JDBC driver,它似乎很适合这个目的。
我使用 CData driver 创建了一个 JDBC 数据适配器,其中 JSON 文件作为源,其中包含 2 个实体的数据 - 用户和帖子。 然后我用这个数据适配器创建了一个报告来显示 table 中的字段。数据是对两个实体进行联合查询的结果,如下所示 -
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>
获取数据并在报告中呈现,但问题是它会重复。
table 在报告中重复了 5 次,4 次有完整数据,1 次只有列 headers。我不明白为什么,非常感谢任何帮助。
我在“详细信息”区域而不是“摘要”区域中添加了 table 组件。引用上面的答案- “你把 table 和图表元素放在报告中的什么地方?它们应该放在摘要部分,而不是详细信息部分。JR 报告详细信息带会为提取到报告中的每一行调用。如果你有 100 行,它将在详细信息带中显示 100 次信息,每个信息包含该行的详细信息。表格和图表收集并汇总所有要显示的数据,应该放在摘要带中,因此它们只显示一次。"