在实际的多级报表项目开发中遇到了这样的问题。
子报表要根据父报表传递过来的值构建sql语句的where条件,再次往数据库中查找数据。
eg:
父报表sql:
SELECT 'XX类' species_name, 'A' species_id
FROM dual
UNION
SELECT 'ZZ类' species_name, 'B' species_id FROM dual
UNION
SELECT 'YY类' species_name, 'C' species_id FROM dual
一级子报表sql:
select
ts.species_id,
from tb_supply_species ts,t_suppliers t
where ts.supply_id=t.id and t.status=1
and ts.species_id like $P{speciesId} GROUP BY ts.species_id
父报表如何传递值给子报表见图:
这里父报表变量$V{speciesIdVar}的
在ireport报表中expression是通过java方法得到一个表达式的。
如此便完成了模糊查询。
方法二:
SELECT 'XX类' species_name, '%A%' species_id
FROM dual
UNION
SELECT 'ZZ类' species_name, '%B%' species_id FROM dual
UNION
SELECT 'YY类' species_name, '%C%' species_id FROM dual
直接传$F{species_id}给子报表即可。