Jasper reports jasper报告从列表索引传递参数
我得到了一个场景,需要使用索引从列表中传递jasper报告参数值 我在jasper报告中执行了以下查询,并定义了以下参数Jasper reports jasper报告从列表索引传递参数,jasper-reports,dynamic-jasper,Jasper Reports,Dynamic Jasper,我得到了一个场景,需要使用索引从列表中传递jasper报告参数值 我在jasper报告中执行了以下查询,并定义了以下参数 <parameter name="clientServiceIds" class="java.util.Collection"/> <parameter name="trafficPeriod" class="java.util.Collection"/> <parameter name="transact
<parameter name="clientServiceIds" class="java.util.Collection"/>
<parameter name="trafficPeriod" class="java.util.Collection"/>
<parameter name="transactionType" class="java.util.Collection"/>
<parameter name="transactionStatus" class="java.util.Collection"/>
<parameter name="roamingPartners" class="java.util.Collection"/>
<parameter name="ages" class="java.util.Collection"/>
SELECT
CLIENT_CODE,
PARTNER_ORG,
PARTNER_CODE,
SERVICE_TYPE,
TP_ID,
TRAFFIC_PERIOD,
SETTLEMENT_TYPE,
SDR_NET,
TRAN_CURR_NET,
TRAN_CURRENCY_ID,
DUE_DATE,
TRANSACTION_TYPE,
STATUS,
NOTE_ID,
AGE
FROM vw_transaction_search
WHERE $X{IN, client_service_id, clientServiceIds}
AND $X{IN, PARTNER_SERVICE_ID, roamingPartners}
AND $X{IN, traffic_period, trafficPeriod}
AND $X{IN, transaction_type, transactionType}
AND $X{IN, status_id, transactionStatus}
AND AGE BETWEEN $P{param1} AND $P{param2}
因此,我正在寻找一种方法,从我的收集年龄传递Jasper报表SQL中的参数param1和param2,类似于param1=ages.get(0)和param2=ages.get(1),因此SQL将类似于
...AND $X{IN, status_id, transactionStatus}
AGE BETWEEN $P{ages.get(0)} AND $P{ages.get(1)}
有没有办法做到这一点 我可以通过添加两个额外的参数age1和age2并将值传递给列表中添加的参数来解决这个问题。下面是详细信息
<parameter name="trafficPeriod" class="java.util.Collection"/>
<parameter name="transactionType" class="java.util.Collection"/>
<parameter name="transactionStatus" class="java.util.Collection"/>
<parameter name="roamingPartners" class="java.util.Collection"/>
<parameter name="age" class="java.util.List" isForPrompting="false"/>
<parameter name="age1" class="java.lang.Integer" isForPrompting="false">
<defaultValueExpression><![CDATA[$P{age}.get(0)]]></defaultValueExpression>
</parameter>
<parameter name="age2" class="java.lang.Integer" isForPrompting="false">
<defaultValueExpression><![CDATA[$P{age}.get(1)]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[SELECT
CLIENT_CODE,
PARTNER_ORG,
PARTNER_CODE,
SERVICE_TYPE,
TP_ID,
TRAFFIC_PERIOD,
SETTLEMENT_TYPE,
SDR_NET,
TRAN_CURR_NET,
TRAN_CURRENCY_ID,
DUE_DATE,
TRANSACTION_TYPE,
STATUS,
NOTE_ID,
AGE
FROM vw_transaction_search
WHERE $X{IN, client_service_id, clientServiceIds}
AND $X{IN, PARTNER_SERVICE_ID, roamingPartners}
AND $X{IN, traffic_period, trafficPeriod}
AND $X{IN, transaction_type, transactionType}
AND $X{IN, status_id, transactionStatus}
AND AGE BETWEEN $P{age1} AND $P{age2}
ORDER BY client_code,
partner_code,
traffic_period,
age]]>
</queryString>
我可以通过添加两个额外的参数age1和age2并将值传递给列表中添加的参数来解决这个问题。下面是详细信息
<parameter name="trafficPeriod" class="java.util.Collection"/>
<parameter name="transactionType" class="java.util.Collection"/>
<parameter name="transactionStatus" class="java.util.Collection"/>
<parameter name="roamingPartners" class="java.util.Collection"/>
<parameter name="age" class="java.util.List" isForPrompting="false"/>
<parameter name="age1" class="java.lang.Integer" isForPrompting="false">
<defaultValueExpression><![CDATA[$P{age}.get(0)]]></defaultValueExpression>
</parameter>
<parameter name="age2" class="java.lang.Integer" isForPrompting="false">
<defaultValueExpression><![CDATA[$P{age}.get(1)]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[SELECT
CLIENT_CODE,
PARTNER_ORG,
PARTNER_CODE,
SERVICE_TYPE,
TP_ID,
TRAFFIC_PERIOD,
SETTLEMENT_TYPE,
SDR_NET,
TRAN_CURR_NET,
TRAN_CURRENCY_ID,
DUE_DATE,
TRANSACTION_TYPE,
STATUS,
NOTE_ID,
AGE
FROM vw_transaction_search
WHERE $X{IN, client_service_id, clientServiceIds}
AND $X{IN, PARTNER_SERVICE_ID, roamingPartners}
AND $X{IN, traffic_period, trafficPeriod}
AND $X{IN, transaction_type, transactionType}
AND $X{IN, status_id, transactionStatus}
AND AGE BETWEEN $P{age1} AND $P{age2}
ORDER BY client_code,
partner_code,
traffic_period,
age]]>
</queryString>
实际上,您不需要创建2个参数,您可以将P{age}传递给一个子报告,该子报告将自行迭代并给出所需的结果。如果P{age}的长度发生变化,这实际上是可行的,更具动态性。实际上,您不需要创建两个参数,您可以将P{age}传递给一个子报告,该子报告将自行迭代,并给出所需的结果。如果P{age}的长度发生变化,这实际上是可行的,更具动态性。