我有一个在 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 子句。事实上,当我使用“Run JasperServer Report”选项从 iReport 运行报告时,它会正确运行并填写默认的 ORDER BY 子句。$P{profit_loss_sort} 是强制性的,在 JasperServer 端,我为我的输入控件取消选中“始终提示”。
我不希望 $P{profit_loss_sort} 成为可见的输入控件,但我仍然希望它在第一次运行报表时使用默认值。有什么想法吗?