我有一个 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 按钮上的动态操作中,我做了两件事:
- 执行 PL/SQL 代码设置
:P210_WAIT := 'FALSE';
- 刷新动作:
- 行动:刷新
- 受影响的元素:选择类型:地区。地区:(包含我的 IR 的地区)
我在 PL/SQL 代码中有调试语句,它们正在出现,但生成报告的 SQL 没有运行,这意味着刷新操作没有“唤醒”IR。
看起来 IR SQL 在页面加载时正在执行,因为我正在动态设置 IR 属性“未找到数据时”值,最初说“请选择条件并单击Generate按钮以显示报告”,这很有效。