Java JasperReports:子报表分页

Java JasperReports:子报表分页,java,jasper-reports,ireport,Java,Jasper Reports,Ireport,我已经在互联网上搜索了一个星期的问题,但我还没有找到它,这是我的问题,我希望这里的任何人都能帮助我解决这个问题 假设我有以下数据: Customer -------- cid : 1 | name: John ; cid : 2 | name: Smith ; PhoneNumber ----- cid : 1 | number: 1234 ; cid : 1 | number: 5678 ; cid : 1 | number: 4321 ; cid : 2 | number: 6745 ;

我已经在互联网上搜索了一个星期的问题,但我还没有找到它,这是我的问题,我希望这里的任何人都能帮助我解决这个问题

假设我有以下数据:

Customer
--------
cid : 1 | name: John  ;
cid : 2 | name: Smith ;

PhoneNumber
-----
cid : 1 | number: 1234 ;
cid : 1 | number: 5678 ;
cid : 1 | number: 4321 ;
cid : 2 | number: 6745 ;
cid : 2 | number: 3124 ;
我想制作一个包含子报表的报表,其中包含以下要求:

客户ID->“cid”将用作报告参数 报告仅显示一位客户及其电话号码 一页只能显示一个客户的一个电话号码 例如,我从上面的“客户详细信息”中提取“cid”=1,它将生成3页,因为名为John的客户有3个电话号码

第1页: 客户名称:John-电话号码:1234

第2页: 客户名称:John-电话号码:5678

第3页: 客户名称:John-电话号码:4321

我的问题是: 我如何设置主报告以根据子报告详细信息的数量生成页面? 我需要在主报表或子报表上设置哪些属性来满足我的要求? 一, 您的主报告查询应返回您要显示的电话号码。比如:

select phone_number from ... where cid=$P{CID}
然后在细节栏中添加一个子报表,并将字段值$F{phone_number}作为参数。在子报表中,可以选择有关第二个值的更多信息

二, 分页更为棘手,使用Jasper也不太容易,但有一些变通方法。 在我的项目中,我们确保所有乐队都是我们想要的高度。
在您的情况下-创建您喜欢的主报告-带有标题等,并计算您需要的细节栏的高度,这样它将占用整个页面。然后确保您的子报表的大小与此完全相同。

非常简单,而且您无需使用子报表

在主要报告中 编写如下所示的查询

选择 cid, 从tablename中选择数字,其中tableid位于从tablename中选择tableid,其中tableid=从tablename中选择mintableid,其中cid=$P{parameter} 从表名 其中cid=$P{parameter} 然后在iReport中创建一组新的cid。 单击最近创建的组标注栏。请参阅该标注栏的“报告”属性。 单击“从新页面开始”复选框

把你的两个档案放在那条带子上。 像

Cid编号 cidfield数字字段

然后运行报告。输出是你想要的