将值从主报告传递到子报告?
我刚刚开始使用 iReport,并接受了对现有报告进行一些更改的任务。
目前有一份主要报告,其中包含 A 部分和 B 部分(联系方式和一些其他信息)。有一个子报告 C,然后是一个子报告 D。我的任务是为 D 中的每个项目复制 A 和 B。如果报告有许多 D 部分,我希望每个部分都有一个 A 和 B。
所有数据都在同一个 XML 文档中,并且要获取 A 部分和 BI 部分的数据,
((net.sf.jasperreports.engine.data.JRXmlDataSource)$F{REPORT_DATA_SOURCE}).dataSource("/Header/")
对于 D 部分的子报告来说
((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/Header/ProductHeader/Member")
如果我将显示 A 部分数据的文档结构中的字段拖到 D 部分,并检查它所说的表达式,则 ,获取数据很简单 $F{ContactNumber} 但在 D 中显示 Null,即使它在 A 部分中显示值
我需要如何修改数据源以在 D 中显示 A 和 B 的内容?
提前致谢
I just started to work with iReport and got the task to do some changes to already existing reports.
Currently there's a main report with section A and B (contact details and some other info). There is a sub report C and then a subreport D. My task is to replicate A and B for every item in D. If the report has many D sections I want to have an A and B for each.
All data is in the same XML document and to get the data for section A and B I have simply
((net.sf.jasperreports.engine.data.JRXmlDataSource)$F{REPORT_DATA_SOURCE}).dataSource("/Header/")
and for sub report with D section
((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/Header/ProductHeader/Member")
if I drag a field from Document Structure that displays data in Section A to section D and check the expression it says
$F{ContactNumber} but displays Null in D even though it displays a value in section A
How do I need to modify my data sources to display content of A and B in D?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要将参数传递给您的子报告。除非您明确定义合同,否则子报告不会共享主报告中的任何数据。它更像是一个方法调用,而不是主报告的延续。
如果您想在子报告的主报告中显示名为
foo
的字段,则需要执行以下操作:foo 的参数
。当您想在子报告中使用
foo
的值时,您应该使用表达式:$P{foo}
(如果它是主报告参数)。You need to pass parameters to your sub-report. A sub-report doesn't share any data from your main report unless you explicitly define the contract. It is more like a method call then a continuation of the main report.
If you wanted to display a field with the name
foo
in your main report in the sub-report you would need to do the following:foo
.foo
and the correct value expression.When you want to use the value for
foo
in your sub-report you should use the expression:$P{foo}
if it is a main report parameter.