问题:报告模板由管理员用户创建,管理员用户仅决定显示哪些数据显示业务用户指定数据过滤器的位置。在更简单的SQL术语中,查询由管理员用户指定,业务用户指定WHERE子句。
Jasper允许用户在SQL查询中指定参数,如$ P {city}。我试图使用link中指定的方法动态检索查询。
可能的解决方案可以是
请你建议一个更好的方法吗?我有一种感觉,这绝对可以更清洁地完成。
感谢您的帮助
答案 0 :(得分:1)
您可以创建一个输入控件来确定所需的WHERE子句,并使用参数来保存该WHERE子句的内容。默认值表达式类似于:
$P{theParameter} == "value_1" ?
(" AND CONDITION_1 IN ('A', 'B', 'C') AND CONDITION_2 = 'Yes' "
) : " AND CONDITION_3 = 'Other' AND CONDITION_4 = 'No' "
然后在WHERE子句中,您将引用它:
WHERE
.... = .....
AND .... = ....
AND .... = ....
$P!{theParameter}
如果您的WHERE子句中的约束列相同,则可以使用$ P!按字面引入参数值,并在查询中引用它:
WHERE
.... = .....
AND .... = ....
AND .... = ....
AND thisValue = $P!{theParameter}