問:從Oracle的FORM中調用REPORT有什麼常用的技巧?
答:具體方法如下;
在菜單中調用REPORT程序(不傳參數,傳參數可用下面的程序段)
Run_Product(REPORTS, '報表程序名.REP', SYNCHRONOUS,
RUNTIME, FILESYSTEM, '', NULL);
在FORM中調用REPORT程序(可傳參數)
DECLARE
pl_id ParamList;
BEGIN
pl_id := Get_Parameter_List('參數列表名');
IF NOT Id_Null(pl_id) THEN
Destroy_Parameter_List( pl_id );
END IF;
pl_id := Create_Parameter_List('參數列表名');
Add_Parameter(pl_id,'REPORT參數名1',
DATA_PARAMETER,':FORM項名1');
Add_Parameter(pl_id,'REPORT參數名2',
TEXT_PARAMETER,':FORM項名2');
… …
Run_Product(REPORTS, '報表程序名.REP',
SYNCHRONOUS, RUNTIME, FILESYSTEM, pl_id, NULL);
END;
在報表中使用參數作為幫定變量時在其前面加一個冒號(:),如:有一個參數p_deptno,傳來的值為10,則select * form emp where deptno=:p_deptno將返回表emp中deptno為10的記錄。
在報表中使用參數作為詞匯參數時在起前面加一個“與”符號(&),如:有一個參數p_where,傳來的值為where deptno=10,則select * from emp &p_where也將返回表emp中deptno為10的記錄。
在調用REPORT時,去掉report server:
Add_parameter(pl_id,'ORACLE_SHUTDOWN',TEXT_PARAMETER,'YES');
調用REPORT時,使報表結果直接輸出到打印機上:
Add_parameter(pl_id,'PSRAMETER_FORM',TEXT_PARAMETER,'NO');
調用REPORT時,不彈出參數窗口:
add_parameter(pl_id,'PARAMFORM',TEXT_PARAMETER,'NO');
調用REPORT時,以滿屏方式顯示:
add_parameter(pl_id, 'maximize', TEXT_PARAMETER,'yes');