0

我有一个 APEX 5.0.3.00.03 页面,其中包含数十个标准字段,然后是一个包含交互式报告 (IR) 的区域。我想推迟生成 IR,直到单击“生成”按钮,但我遇到了麻烦。没有标准的报告会通过一个讨厌的 5 表连接生成数百万行,所以我想推迟它的处理,直到用户准备好。我知道我可以做一个/*+ FIRST_ROWS */提示,但仍然希望避免调用 SQL,直到用户选择一些标准。

我尝试了以下方法:

创建了一个隐藏字段 P210_WAIT,初始值为“TRUE”,我将其包含在 SQL 标准中,如下所示:

select * from tab_1, tab_2, tab_3, tab_4, tab_5
where :P210_WAIT != 'TRUE' 
and  -- join, and dozens of other criteria here

在 Generate 按钮上的动态操作中,我做了两件事:

  1. 执行 PL/SQL 代码设置:P210_WAIT := 'FALSE';
  2. 刷新动作:
    • 行动:刷新
    • 受影响的元素:选择类型:地区。地区:(包含我的 IR 的地区)

我在 PL/SQL 代码中有调试语句,它们正在出现,但生成报告的 SQL 没有运行,这意味着刷新操作没有“唤醒”IR。

看起来 IR SQL 在页面加载时正在执行,因为我正在动态设置 IR 属性“未找到数据时”值,最初说“请选择条件并单击Generate按钮以显示报告”,这很有效。

4

1 回答 1

1

如果我正确理解您的问题,您的主要问题将是:刷新区域的动态操作不起作用,我说的对吗?

如果这是问题,试试这个:

  • 首先,确保源查询中的所有绑定变量都列在Page Items to Submit源查询区域下方。

  • 然后,为 IR 区域分配Static ID

  • 接下来是,将Refresh动态动作更改为Execute Javascript并粘贴

     $('#static_id').trigger('apexrefresh');
    

希望这可以帮助。

于 2016-04-19T02:11:44.567 回答