我一直在网上搜索我的问题一周,但我还没有找到它,这是我的问题,我希望这里的任何人都可以帮我解决这个问题。
想象一下,我有以下数据:
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 ;
我想使用以下要求在子报表中生成报表:
例如,我从上面的客户详细信息中获取'cid'= 1,它将生成3页,因为姓名为“John”的客户有3个PhoneNumber。
客户名称:John - 电话号码:1234
客户名称:John - 电话号码:5678
客户名称:John - 电话号码:4321
答案 0 :(得分:0)
1
您的主报告查询应返回您要显示的电话号码。类似的东西:
select phone_number from ... where cid=$P{CID}
然后在Detail
频段中添加子报告,并将字段值($ F {phone_number})作为参数。在子报表中,您可以选择有关此第二个值的更多信息。
2
对于Jasper而言,分页更加棘手并且不那么容易,但有一些解决方法
在我的项目中,我们确保所有乐队都是我们想要的高度。
在您的情况下 - 根据您的喜好创建主报告 - 使用标题等,并计算您需要细节带的高度,这样就需要一整页。然后确保您的子报表完全按此大小。
答案 1 :(得分:0)
非常简单,你也不需要接受子报告。
主报告中的写下面的查询
SELECT
cid,
(SELECT number FROM tablename WHERE tableid IN (SELECT tableid FROM tablename WHERE tableid=(SELECT min(tableid) FROM tablename WHERE cid=$P{parameter})
FROM tablename
WHERE cid=$P{parameter}
然后在iReport中创建一组新的cid。 clik你最近创建的组乐队。查看该乐队的报告属性。 在新页面上启动clik复选框。
将你的两个归档于该乐队。 像
Cid号码 cidfield numberfield
然后运行报告。输出就是你想要的。