我有一份我在iReport professional 4.5.1中创建并已部署到JasperServer的报告。我的报告中有一个参数用于指定排序列:
名称:profit_loss_sort
参数类:java.lang.String
用作提示:是
默认值表达式:“FAC_ID”
然后我有另一个参数需要$ P {profit_loss_sort}并使用它为我的查询创建一个ORDER BY子句:
名称:profit_loss_sort_function
参数类:java.lang.string
用作提示:否
默认值表达式:“ORDER BY”+ $ P {profit_loss_sort} +“ASC”
当$ P {profit_loss_sort}设置为可见时,这在iReport和JasperServer上工作正常。我在每个列标签上都设置了一个超链接,当您单击它们时,报告会对每个列进行排序。
当我取消选中$ P {profit_loss_sort}的可见框时,我第一次尝试运行报告时出现Oracle错误,我错过了一个表达式(ORA-00936:缺少表达式)。我不明白,因为我的查询中的ORDER BY子句是:
$ P!{profit_loss_sort_function}
所以JasperServer应该采用这两个参数的默认值并提出一个ORDER BY子句。实际上,当我使用“运行JasperServer报告”选项从iReport运行报告时,它会正常运行并填写默认的ORDER BY子句。 $ P {profit_loss_sort}是强制性的,在JasperServer端我取消选中“始终提示”输入控件。
我不希望$ P {profit_loss_sort}成为可见的输入控件,但我仍然希望它在第一次运行报表时使用默认值。有什么想法吗?
答案 0 :(得分:1)
我想通了 - 我有一个主要报告,它将参数传递给子报告。我在子报表中为参数$ P {profit_loss_sort}设置了默认值,但在主报表中没有。
我在主报表中为它设置了默认值,现在当我取消选中“可见”框时,JasperServer报表会隐藏该输入控件,我可以使用我的超链接进行排序。