ireport中当使用connection方式获得数据源时如何构造sql语句的where条件。

在实际的多级报表项目开发中遇到了这样的问题。

子报表要根据父报表传递过来的值构建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

父报表如何传递值给子报表见图:ireport中当使用connection方式获得数据源时如何构造sql语句的where条件。

这里父报表变量$V{speciesIdVar}的ireport中当使用connection方式获得数据源时如何构造sql语句的where条件。

在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}给子报表即可。

你可能感兴趣的:(sql,C++,c,C#,F#)