以下.jrxml:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="DTC-Campaigns-Block-Campaigns-Helper-Campaigns" language="groovy" pageWidth="794" pageHeight="450" orientation="Landscape" columnWidth="794" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
<queryString><![CDATA[SELECT 1;]]></queryString>
<detail>
<band height="50" splitType="Stretch">
<subreport>
<reportElement x="0" y="0" width="794" height="25"/>
<subreportExpression class="java.lang.String"><![CDATA["./test.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
</jasperReport>
不会在iReport 3.6.0中编译:
Compiling to file... /home/dominik/workspace/project1/reporting/MyFile.jasper
Compiling subreports....
Unable to locate the subreport with expression: "$P{SUBREPORT_DIR} + "test.jasper"".
即使将SUBREPORT_DIR
修改为./
也无济于事,也不会在主报告之前手动编译test.jrxml
。
有什么想法吗?
答案 0 :(得分:1)
在jrxml提取中,您没有指定SUBREPORT_DIR是String参数...您可以添加此信息。
我还注意到version 3.5.2 and 3.5.3之间行为的变化 版本3.5.3的更改日志说:
自动编译子报告
因此,参数化子报告路径似乎不再起作用了...... (但我记得收到警告,而不是失败)。
你试过了吗?
$P{SUBREPORT_DIR} + "test.jrxml"
给出表达式,并且根本没有参数(如"test.jrxml"
- 您的子报表需要位于同一本地目录中你的主要报告)答案 1 :(得分:0)
您无法确定当前目录并将其作为参数传递吗?我就是这样做的,而且效果很好。如果要将Jasper Reports集成到代码中,您甚至可以使用一些代码来获取Java中当前目录的完整路径,并通过HashMap传递它。
答案 2 :(得分:0)
要解决此问题,您必须在$ P {SUBREPORT_DIR}中设置绝对路径。
可以在属性窗口中的iReport中,在“默认值表达式”属性中完成。
有关更好的说明,请参阅:http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=62793
答案 3 :(得分:0)
您不需要在子报表中包含SUBREPORT_DIR ...只要supreport与主报表中的目录相同...就没有问题了......预览jrxml文件时会发生编译...
答案 4 :(得分:0)
JasperReports的新版本不再出现问题(至少在我的情况下不是这样)。
答案 5 :(得分:0)
在我的情况下:在我添加的属性编辑器的属性Subreport Expression
中,PARAMETER SUBREPORT_DIR
和/
得到类似的内容:
$P{SUBREPORT_DIR} + "/InvoiceDetail.jasper"
答案 6 :(得分:0)
我正在使用iReport版本3.7.3
可以通过两种方式解决问题:
1.将参数SUBREPORT_DIR的值分配给变量并使用变量代替参数,如:
$V{path} + "InvoiceDetail.jasper"
确保将“变量表达式”设置为$ P {SUBREPORT_DIR}
2.将参数SUBREPORT_DIR的'默认值表达式'设置为$ P {SUBREPORT_DIR},并将其用作:
$P{SUBREPORT_DIR} + "InvoiceDetail.jasper"