Report动态条件查询
如果一条SQL的查询条件是动态的,SQL语句本身是无法做到这个功能。在JAVA中常见的做法进行这字符串拼接来达到这一功能。在Report也差不多,在触发器事件中进行字符串拼接。
1、 增加一个报表用户参数p_batch_id_char 、p_batch_id_temp
2、 在报表After Parameter Form触发器,加入字符串拼接条件
function AfterPForm return boolean is
begin
if nvl(:p_batch_id_char,'A')='A' then –通过条件,来进行字符串拼接。
:p_batch_id_temp := 'and 1=1' ;
else
:p_batch_id_temp := 'and to_char(m.fee_batch_id) in ('|| :p_batch_id_char ||')' ;
end if;
return (TRUE);
end;
3、 在数据模型的SQL语句中加入刚才拼接的字符串。
Select * from table_name where &p_batch_id_temp
注:是用“&”,不是PL/SQL中的“||”。
矩阵报表
矩阵报表,不要被Oracle的概念给忽悠了。其实就是crystalreport中是交叉报表。