У меня есть сценарий, где мне нужно передать значение параметра отчета jasper из списка с помощью индекса.jasper report параметр передачи из индекса списка
У меня есть следующий запрос, выполненный в отчете яшмы со следующими параметрами.
<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);
, так что я ищу способ передать параметры param1 и param2 в моем отчете Jasper SQL из моего возраста коллекции, что-то вроде 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)}
можно ли достичь этого?
На самом деле вам не нужно создавать 2 параметра, вы можете передать P {age} в дополнительный отчет, который будет перебирать сам по себе и дать результат, в котором вы нуждаетесь. Это действительно будет работать, если изменится длина P {age}, более динамичная. – Arasu