With APEX 5 Interactive Reports (IRs) we have the luxury of having multiple IRs on the same APEX page.
That is wonderful, until it comes time to Reset a particular IR. The usual RIR and CIR syntax operates on ALL IRs on the page. Probably not what you want.
To refresh a single IR, use the standard APEX_IR API REFRESH_REPORT procedure.
Briefly:
- Add a Static ID to your IR. As best practice, do this for all your IRs. The Static Id attribute is under the Advanced attribute section.
- Create a button to trigger the IR refresh. Set the Action to Defined by Dynamic Action.
- Create a dynamic action, on Click of your new button.
- Add two True events, one Execute PL/SQL for the APEX_IR.REFRESH_REPORT call, one Refresh to refresh the IR region.
- The PL/SQL calls APEX_IR.RESET_REPORT:
DECLARE v_region_id apex_application_page_regions.region_id%type; BEGIN -- get the IR region id SELECT region_id INTO v_region_id FROM apex_application_page_regions WHERE application_id = :APP_ID AND page_id = :APP_PAGE_ID AND static_id = 'my-region-id'; -- use the Static Id set in the IR Advanced attribute section APEX_IR.RESET_REPORT( p_page_id => :APP_PAGE_ID, p_region_id => v_region_id, p_report_id => NULL ); -- resets the last-used report END;
If you need to reset a particular, saved report, you will need to query for that report_id and enter it instead of NULL in the APEX_IR.RESET_REPORT call.
The Refresh True action is a simple Refresh on your IR Region.
Be sure to uncheck the Fire on Page Load option for both True actions.
That’s it!