How to add a parameter list in calling a report
Mark1970Apr 11 2012 — edited Apr 11 2012I have to change the code of a trigger When-Button-Pressed in order to call a report from a form by passing a parameter, but I've got some problems.
This is the part of the code I'm interested in (I've put a <<<<<<<< on the lines interested):
DECLARE
v_repid REPORT_OBJECT;
v_rep VARCHAR2(100);
v_rep_status VARCHAR2(100);
--v_param VARCHAR2(200) := NULL;
--v_valor VARCHAR2(200);
v_url VARCHAR2(2000);
v_repserver varchar2(20) := 'myserver';
--v_PARAMETER varchar2(100) := '';
v_parameter_list ParamList; --<<<<<<<<
BEGIN
:global.p_id_attivita := 23728; --<<<<<<<<
Add_Parameter(v_parameter_list, 'P_ID_ATTIVITA', TEXT_PARAMETER, :global.p_id_attivita);--<<<<<<<<
v_repid := FIND_REPORT_OBJECT('MYREPORT'); -- report is an element from object navigator report
SET_REPORT_OBJECT_PROPERTY(v_repid, REPORT_EXECUTION_MODE, BATCH);
SET_REPORT_OBJECT_PROPERTY(v_repid, REPORT_COMM_MODE, SYNCHRONOUS);
SET_REPORT_OBJECT_PROPERTY(v_repid, REPORT_DESTYPE, cache);
SET_REPORT_OBJECT_PROPERTY(v_repid, REPORT_DESFORMAT, 'SPREADSHEET' );
SET_REPORT_OBJECT_PROPERTY(v_repid, REPORT_SERVER, v_repserver);
v_rep := RUN_REPORT_OBJECT(v_repid,v_parameter_list); --<<<<<<<<
v_rep_status := REPORT_OBJECT_STATUS(v_rep);
WHILE v_rep_status IN ('RUNNING','OPENING_REPORT','ENQUEUED') LOOP
v_rep_status := REPORT_OBJECT_STATUS(v_rep);
END LOOP;
IF v_rep_status = 'FINISHED' THEN
WEB.SHOW_DOCUMENT(v_url||'/reports/rwservlet/getjobid'||SUBSTR(v_rep, INSTR(v_rep,'_', -1)+1)||'?'||'server='||v_repserver, '_blank');
END IF;
END;
When I try to call the report by pushing the button the trigger is linked to, I get the following message:
FRM-47009: Cannot add parameter P_ID_ATTIVITA to Parameter List : invalid list ID.
I remind you that without parameters this code works.
Thanks!