如何以编程方式将Apex 5报告还原为默认状态?

时间:2017-12-06 14:20:00

标签: oracle-apex oracle-apex-5.1

我在Apex 5中有一个交互式报告,每次页面加载时,我都希望它看起来与我第一次运行时的显示完全一样,并使用默认设置。

问题在于,如果用户应用任何过滤器或隐藏列,则下次加载页面时,报告会记住该配置。

我尝试使用未记录的APEX_IR.RESET_REPORT程序:

https://docs.oracle.com/database/121/AEAPI/apex_ir.htm#BABEJAFB

但它要么不起作用,要么只撤消最后一次更改,或者需要多次运行才能实际工作。

我在页面加载时尝试使用以下代码进行动态操作:

DECLARE  
  v_region_id APEX_APPLICATION_PAGE_REGIONS.REGION_ID%TYPE;  
BEGIN  


  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 = 'Images_Report'; 


   APEX_IR.RESET_REPORT(  
       P_page_id => :APP_PAGE_ID,  
       P_region_id => v_region_id,  
       p_report_id => null

  );  

END;  

我也试过这段代码

DECLARE  
  v_region_id APEX_APPLICATION_PAGE_REGIONS.REGION_ID%TYPE;  
BEGIN  


  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 = 'Images_Report'; 


   APEX_IR.RESET_REPORT(  
       P_page_id => :APP_PAGE_ID,  
       P_region_id => v_region_id,  
       p_report_id => APEX_IR.GET_LAST_VIEWED_REPORT_ID(
                        p_page_id   => :APP_PAGE_ID,
                        p_region_id => v_region_id
                       )

  );  

END;  

每次加载页面时,我都希望报告看起来处于默认状态(首次运行时)。

相反,报告显示最后一个状态,即使用户注销,也会登录并重新启动应用程序。

1 个答案:

答案 0 :(得分:0)

将RIR作为网址

中的clear cache参数发送

https://docs.oracle.com/database/apex-5.1/HTMDB/linking-to-interactive-reports.htm#GUID-B917CEB3-A0B9-414B-A90A-7B44DD15EA67

网址看起来像

f?p=102:94:6722612001859::NO:RIR::

https://docs.oracle.com/database/apex-5.1/HTMDB/understanding-url-syntax.htm#HTMDB03019

文档说明了有关apex_ir.reset_report过程的信息

  

此过程只应在页面提交过程中使用。

这可能是你遇到麻烦的原因