【发布时间】:2015-06-23 15:52:15
【问题描述】:
我遇到了一个场景,我需要使用索引从列表中传递 jasper 报告参数值。
我在 jasper 报告中执行了以下查询,并定义了以下参数。
<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}
这里的年龄是我要传递给报告的列表,其中包含索引 0 和索引 1 处的两个值。所有参数 (paramValueMap) 我来自无法修改的外部系统,
JasperFillManager.fillReport(jasperReport, paramValueMap, connection);
所以我正在寻找一种方法在我的集合年龄的 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)}
有没有什么办法可以做到这一点?
【问题讨论】:
标签: jasper-reports dynamic-jasper