如何将可选参数传递给报表?

Sub*_*shi 2 java jasper-reports

我正在使用iReport 4.5.0创建带有嵌入式sql查询JR报告.

我已经在Query中添加了参数.但我希望提供灵活性,以便用户可以传递参数或不能传递参数,以便相同的报告可以与我的Web应用程序一起使用.

任何人都可以告诉我如何使我的报告更灵活,以便用户可以或不能传递参数.

我修改了queryString,如下所示:

SELECT columnA, ColumnB FROM Table WHERE Table."columnA" = $P!{}
Run Code Online (Sandbox Code Playgroud)

但是iReport无法生成报告.

mda*_*man 6

我通常遵循这种模式:像你一样定义$ P {MyParam}.然后使用如下默认值添加$ P {MyParam_SQL}:

$P{MyParam} == null ? "1=1" : "columnA = '" + $P{MyParam} + "'"
Run Code Online (Sandbox Code Playgroud)

报告中的SQL是这样的:

SELECT columnA, ColumnB 
FROM table 
WHERE 
  some_filters
  AND $P!{MyParam_SQL}
  AND some_other_stuff
Run Code Online (Sandbox Code Playgroud)

它与其他两个建议的答案没有根本的区别.但我觉得这很容易理解和维护.