0

我有一个在 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} 成为可见的输入控件,但我仍然希望它在第一次运行报表时使用默认值。有什么想法吗?

4

1 回答 1

1

我想通了 - 我有一个将参数传递给子报表的主报表。我在子报表中为参数 $P{profit_loss_sort} 设置了默认值,但在主报表中没有。

我在主报告中为其设置了默认值,现在当我取消选中“可见”框时,JasperServer 报告隐藏了该输入控件,我可以使用我的超链接进行排序。

于 2012-06-22T14:28:39.003 回答