Oracle 在APEX中创建表单以在交互式报表的查询中设置变量

Oracle 在APEX中创建表单以在交互式报表的查询中设置变量,oracle,oracle-apex,Oracle,Oracle Apex,我是一个相对聪明的人 我在10gR2数据库上运行APEX 4.0 我编写了一个查询,它接受一些输入(两个日期字段,用于开始和结束,一个用于进一步筛选的文本字段),并从中创建了一个动态报告,当我从中提取输入变量(:start_date,:end_date,:OFFICE)或用静态值替换它们时,该报告就会工作 我想在页面上创建一个表单,将这些值提交到动态报告页面,以便在查询中使用,以过滤用户在点击报告时看到的结果 我很难找到一个好的循序渐进的例子。我创建了一个空白页面,其中包含两个日期选择器和一个L

我是一个相对聪明的人

我在10gR2数据库上运行APEX 4.0

我编写了一个查询,它接受一些输入(两个日期字段,用于开始和结束,一个用于进一步筛选的文本字段),并从中创建了一个动态报告,当我从中提取输入变量(:start_date,:end_date,:OFFICE)或用静态值替换它们时,该报告就会工作

我想在页面上创建一个表单,将这些值提交到动态报告页面,以便在查询中使用,以过滤用户在点击报告时看到的结果

我很难找到一个好的循序渐进的例子。我创建了一个空白页面,其中包含两个日期选择器和一个LOV select下拉列表,但不确定如何最好地将这些值转换为动态报告


有人能给我指出正确的文档吗?

您想在查询中引用您的页面项目,这意味着您必须先提交页面,然后查询才能获取它们的会话状态。当我提供一个小参数表单时,我要做的就是在上面放置一个按钮(即标记为“查询”),它执行提交操作

在报告中,您可以引用您的项目。例如,如果您有两个项目
P1\u DATE\u START
P1\u DATE\u END
,则您的查询可能如下所示:

SELECT firstname, lastname, job
  FROM employees
 WHERE employment_start BETWEEN to_date(:P1_DATE_START) AND to_date(:P1_DATE_END);

以下是使用Apex 4.1开发的,但除了一些外观上的更改,原则应该是相同的

数据来自标准scott.emp模式

概述

这是第1页,用户可以输入empno和\或hiredate

按下“提交”按钮后,将在不同页面上显示以下报告:

它的工作原理

在第1页,我创建了所示的三个项目。文本项称为P1_EMPNO和P1_HIREDATE。按钮的操作是“提交页面”

仍在第1页,使用以下值创建分支:

该分支导航到第2页(尚待开发),并使用第1页中的值设置第2页上项目的值

创建一个新页面,在本例中,将参考第2页

在第2页,使用以下查询创建新的交互式报告:

select e.* 
from emp e
接下来,在与报告相同的区域中创建两个文本项,并将其命名为:P2_EMPNO和:P2_HIREDATE。我发现在开发过程中显示这些项目很有用,这样您就可以看到正确的值被传递到页面。一旦您对报告满意,就可以将它们设置为隐藏

最后,修改交互式报告使用的查询,以使用第1页提供的值


运行应用程序。

详细记录的答案,尽管当您的报告与参数位于同一页时,您不需要分支:)此外,我认为没有必要在第2页中包含项目,保存为显示项目(否则您会尝试更改它们,没有提交就不会发生任何事情)。您可以简单地从p2中引用p1_hiredate。我想知道(你不能访问工作区atm),你能不能设置红外过滤器,比如
IR\u P2\u EMPNO
?@Tom:谢谢你的评论,非常感谢。我编辑了我的答案,以澄清第2页上显示字段的原因。伊恩:我试图实现这一点,但失败了。第2页上的变量似乎没有填充为可在分支中设置的“项”。除了在交互式报告的源代码中命名它们之外,我还需要做些什么来将它们转换为可以设置的项目吗?罗伯:你能把你的第2页运行时的样子截屏吗?我明白我的错误了。我跳过了第2页上的项目创建,这似乎只是为了显示。谢谢你的帮助!