我是iReport的新手,到目前为止,我所做的只是运行一个已经编译好的报告。事实上,这是一个我们目前正在使用的报告,所以应该不会有任何问题。不过,每当我运行报告时,都会抛出以下错误消息
Compiling to file... C:\Program Files\Fishbowl\reports\Custom\PackingListTacticalMedical2015.jasper
Compiling subreports....
Subreport C:\Program Files\Fishbowl\reports\Custom\SOPackingListTacticalMedical2015.jrxml already compiled.
**Unable to locate the subreport with expression: "$P{cbLayoutFormat}.equals("standard") ? $P{path} + "POPackingList.jasper" : $P{cbLayoutFormat}.equals("carton") ? $P{path} + "cartonPOPackingList.jasper" : $P{path} + "POPackingListLoc.jasper"".**
Compilation running time: 13,619报告仍然在运行和编译,但是当我被提示“输入一个shipID”时--我确实这样做了--结果是空白的。我知道这条信息是什么意思,我只是不明白它的意思。
感谢任何可以在这方面提供指导或解释的人。
发布于 2015-09-25 00:37:34
尝试将子报表的表达式数据类型更改为InputStream,而不是字符串(路径),然后将子报表作为输入流作为参数进行传递。将您的子报表放在resources目录中。然后编译它。
InputStream subReportStream=getClass().getResourceAsStream("subReportName.jasper");
params.put("SUBREPORT_STREAM", subReportStream);
this work fine for me.发布于 2016-02-22 14:26:16
按照Fishbowl将其运行路径插入到$P{ path }参数中的方式,在编译和更改报表时,您需要关闭编译子报表选项。此外,如果您想在iReport中运行它,而不是在Fishbowl中运行,那么就必须知道您正在查找的所有数据库ID。解决这个问题的最简单的方法是将报告编译到它们的工作目录中,并且您可以在编译对报告的更改时在Fishbowl中进行刷新。
https://stackoverflow.com/questions/32765033
复制相似问题