我已经创建了一个框架和子报表,用于与APEX集成,并精炼到我准备在JasperServer上部署的地步。不知何故,确切的语法正在打败我。我已经尝试了以下问题所表明的所有变化,但似乎没有任何效果。我正在使用Glassfish,顺便说一句,但我认为这不重要。以下是我的问题:
部署子报表时,是作为报表还是作为JRXML文件进行部署?
我是否需要为帧报告设置子报表的输入控件?
只要我将正确的SUBREPORT_DIR
参数传递给框架,我在部署子报表(文件夹结构)的位置是否重要?
在SUBREPORT_DIR
上,我尝试了几件不同的事情。首先,我将默认设置作为本地盒子上的绝对路径,用于调试目的,并在URL中传递我想要的值(即...& SUBREPORT_DIR = / Subreports / ...)。我也尝试将默认设置为我想要的路径。两者都不起作用,但前者是否应该和后者一样工作?
传递SUBREPORT_DIR
的实际语法是什么?我已将框架报告部署为“/ reports / frame”,将子报告部署为“/ reports / subreports / sub”,因此我传递了“repo:/ Subreports /”(URL中没有引号,默认为引号)在框架上。
我的框架和子工作在iReport中使用与我传递的相同的参数,但它们根本不起作用。我可以在JasperServer下加载sub作为报告,将params帧传递给它,然后让它工作,但是当我尝试运行框架时,没有骰子。
提前感谢所有帮助,我希望在我正确配置后再付款。
答案 0 :(得分:1)
OP的调查结果。
子报表需要作为JRXML文件部署在存储库中。它会说" File"在存储库视图的相应列中。
您不需要为子报表设置输入控件。框架报告只需要它使用的输入控件,而不是子报告参数。
只要您传递了正确的SUBREPORT_DIR,就可以将子报告放在任何您想要的位置,但请记住,帧报告将使用您指定的名称引用该子报告。我的两个问题之一(另见上面的#1)是在默认路径中指定扩展名。这在iReport中是正确的,但在服务器端是错误的。
SUBREPORT_DIR
可以作为参数传递,并按宣传的方式工作。
SUB_REPORT_DIR
的正确路径,我现在用作默认的参数,类似于"repo:/reports/Subreports/"
。因此,详细信息下的子报告表达式为:$P{SUBREPORT_DIR} + "five_col_sub".
请参阅上面的#3。
不是那么棘手,真的,但也不完全直观。我的同事指出" repo:"是JasperServer存储库的缩写。现在似乎显而易见,但我认为这意味着"报告",因此必须在/ reports /目录下存在具有子报表和子报表本身的任何报告,但事实并非如此。