带有 SQL 字符串的 JasperStudio 参数
JasperStudio Parameter with SQL String
我正在尝试在 JasperStudio 中创建动态 SQL 查询。
Select * 来自 table 其中用户 = 1
和风险 = 'R'
条件,只应在数据库上执行,当某个参数设置为 TRUE(或 1)时。
如果此参数为 FALSE,则查询应忽略条件。
我想到了以下几点:
我使用条件作为它自己的参数,当参数为 FALSE 时将其设置为“1”,因此两个语句将是:
1) Select * 来自 table 其中用户 = 1
和风险 = 'R'
2) Select * 来自 table 其中用户 = 1
AND 1= 1
但不知何故,这不起作用。有一个更好的方法吗?由于我正在访问两个不同的数据库,因此将设置 TRUE-FALSE 参数,并且 RISKS 列只存在于一个 table(无法添加该列)。
这可以使用查询块来完成(当您输入查询 $!P{PARAM_NAME}
而不是 $P{PARAM_NAME}
时)。
请看下面的例子:
- 声明参数:
a) UserId 参数,您将传递给查询:
<parameter name="UserID" class="java.lang.Integer"/>
b) UseRiskParam - 是你的 "certain parameter which can be true or false"
<parameter name="UseRiskParam" class="java.lang.Boolean"/>
c) 风险参数 - 如果 UseRiskParam = true
,它将应用于 RISKS 列
<parameter name="Risks" class="java.lang.Integer"/>
d) 现在我定义生成附加条件的参数。这个参数应该隐藏。它根据 UseRiskParam
的值生成附加条件。当它为真时,条件看起来像 "RISKS = 1" 否则它将是“1 = 1”
<parameter name="RisksCondition" class="java.lang.Integer" isForPrompting="false">
<defaultValueExpression><![CDATA[$P{UseRiskParam} ? "RISKS = " + ($P{Risks} == null ? "null" : $P{Risks}.toString()) : " 1 = 1"]]></defaultValueExpression>
</parameter>
- 报表查询
<queryString>
<![CDATA[select * from table where user = $P{UserID} and $P!{RisksCondition}]]>
</queryString>
因为 $P!{RisksCondition}
与 !
一起传递,它作为 sql 语句的一部分传递,而不是作为查询参数传递。
希望此信息有用
我正在尝试在 JasperStudio 中创建动态 SQL 查询。
Select * 来自 table 其中用户 = 1 和风险 = 'R'
条件,只应在数据库上执行,当某个参数设置为 TRUE(或 1)时。 如果此参数为 FALSE,则查询应忽略条件。 我想到了以下几点:
我使用条件作为它自己的参数,当参数为 FALSE 时将其设置为“1”,因此两个语句将是:
1) Select * 来自 table 其中用户 = 1 和风险 = 'R'
2) Select * 来自 table 其中用户 = 1 AND 1= 1
但不知何故,这不起作用。有一个更好的方法吗?由于我正在访问两个不同的数据库,因此将设置 TRUE-FALSE 参数,并且 RISKS 列只存在于一个 table(无法添加该列)。
这可以使用查询块来完成(当您输入查询 $!P{PARAM_NAME}
而不是 $P{PARAM_NAME}
时)。
请看下面的例子:
- 声明参数:
a) UserId 参数,您将传递给查询:
<parameter name="UserID" class="java.lang.Integer"/>
b) UseRiskParam - 是你的 "certain parameter which can be true or false"
<parameter name="UseRiskParam" class="java.lang.Boolean"/>
c) 风险参数 - 如果 UseRiskParam = true
,它将应用于 RISKS 列<parameter name="Risks" class="java.lang.Integer"/>
d) 现在我定义生成附加条件的参数。这个参数应该隐藏。它根据 UseRiskParam
的值生成附加条件。当它为真时,条件看起来像 "RISKS = 1" 否则它将是“1 = 1”
<parameter name="RisksCondition" class="java.lang.Integer" isForPrompting="false">
<defaultValueExpression><![CDATA[$P{UseRiskParam} ? "RISKS = " + ($P{Risks} == null ? "null" : $P{Risks}.toString()) : " 1 = 1"]]></defaultValueExpression>
</parameter>
- 报表查询
<queryString> <![CDATA[select * from table where user = $P{UserID} and $P!{RisksCondition}]]> </queryString>
因为 $P!{RisksCondition}
与 !
一起传递,它作为 sql 语句的一部分传递,而不是作为查询参数传递。
希望此信息有用