在 Oracle Application Express 3.1 中使用高级交互式报表区域技巧

本教程将向您介绍在 Oracle Application Express 3.1 中使用交互式报表区域的一些高级技巧。

大约 30 分钟

主题

本教程包括下列主题:

将光标置于此图标上以加载和查看本教程的所有屏幕截图。 (警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。

概述

在本教程中,您将了解一些与交互式报表区域相关的更高级的任务,交互式报表区域是 Oracle Application Express 3.1 的一个新特性。

要了解 3.1 新特性的更多信息,请单击此处

返回主题列表

开始本教程之前,您应该:

1.

安装 Oracle 数据库 9.2 或更高版本。

2.

下载并配置 Oracle Application Express 3.1。

3.

这里下载 OEHR 示例对象打包应用程序,并将其导入到 Oracle Application Express 3.1 实例中。

4.

要完成本教程,您需要完成在 Oracle Application Express 3.1 中构建和定制交互式报表教程。或者,您可以将 OBE 新特性应用程序作为一个打包应用程序导入 Application Express 中。下载并解压缩 apexnf.zip 文件,导入 irrobe_packagedapp.sql 打包应用程序文件。

5.

从 SQL Workshop > SQL 命令中,执行以下语句:

update oehr_employees
   set job_id='AD_PRES'
 where employee_id=104

注:应用程序编号和页面编号可能与屏幕截图略有不同。

返回主题列表

作为一名开发人员,您能够包括或排除重置功能、Actions Menu 或 Search Bar。如果 Actions Menu 中没有重置功能,您的最终用户将不能使用 Column Heading 菜单在自定义报表后对其进行重置。为了进行重置,您可以通过编程方法提供一个重置按钮。

在这一主题中,您首选要创建一个交互式报表、然后排除 Search Bar,最后创建一个重置按钮。执行以下步骤:

1.

在 Application 页面中,单击 Create Page

2.

单击 Report 并单击 Next

3.

单击 Interactive Report 并单击 Next

4.

输入 Department List 作为 Page Name 和 Region Name。针对 Breadcrumb 选择 Breadcrumb,然后单击 Next

5.

接受默认选项,然后单击 Next

6.

输入以下 SQL,然后单击 Next

select d.department_name,
 (select count(*) from oehr_employees where department_id = d.department_id) Employees,
 d.department_id 
from oehr_departments d 

7.

单击 Finish

8.

已成功创建交互式报表页面。在运行页面之前,您需要进行一些更改。单击 Edit Page

9.

在 Regions 下,选择 Interactive Report 链接。

10.

单击 Search Bar 选项卡。

11.

在 Include in Actions 菜单下,针对 Include Search Bar 选择 No,然后单击 Apply Changes

12.

您现在可以创建一个按钮以执行重置功能。在 Buttons 下,单击 Create 图标。

13.

选择 Department List 区域并单击 Next

14.

接受默认选项 Create a button in a region position,然后单击 Next

15.

输入 Reset 作为 Button Name,选择 Redirect to URL without submitting page,然后单击 Next

16.

接受默认选项,然后单击 Next

17.

针对 Position 单击 [Top],针对 Alignment 选择 Left,然后单击 Next

18.

要重置交互式报表,请发送一个清空缓存请求“RIR”。这将重置调用的任何页面上的交互式报表。针对 Page 输入当前的页面。为 Clear Cache 输入 2,RIR,然后单击 Create Button

注:RIR 字符串相当于最终用户从目标页面的交互式报表 Actions Menu 上选择 Reset 选项,使报表返回至由开发人员设定的默认报表设置。

19.

已成功创建您的按钮。单击 Run Page

20.

随即显示报表。选择 Employees 标题并单击降序排列图标。

21.

现在您的报表将按 Employees 的降序排列。从列标题菜单中,您只能更换到升序或按另一列排列。如果您的最终用户希望完全移除排序,则他们需要使用 Reset 按钮。单击 Reset

22.

注意,您的报表已经重置回原始状态。

返回主题列表

您可以通过使用 URL 项的值传递筛选条件,在交互式报表上定义声明式筛选器。这允许您定义复杂的查询条件,该条件可以转换成筛选器或者从一个报表下钻到交互式报表。要创建从一个交互式报表到另一个报表的下钻,执行以下步骤:

1.

导航至 Application 页面。单击 Create Page

2.

单击 Report 并单击 Next

3.

单击 Interactive Report 并单击 Next

4.

输入 Employees by Department 作为 Page Name 和 Region Name。针对 Breadcrumb 选择 Breadcrumb。针对 Entry Name 输入 Employees by Department。针对 Parent Entry 选择 Department 链接,然后单击 Next

5.

接受默认选项,然后单击 Next

6.

输入以下 SQL,然后单击 Next

select	 "OEHR_EMPLOYEES"."FIRST_NAME" as "FIRST_NAME",
"OEHR_EMPLOYEES"."LAST_NAME" as "LAST_NAME",
"OEHR_EMPLOYEES"."EMAIL" as "EMAIL",
"OEHR_EMPLOYEES"."PHONE_NUMBER" as "PHONE_NUMBER",
"OEHR_EMPLOYEES"."HIRE_DATE" as "HIRE_DATE",
"OEHR_EMPLOYEES"."JOB_ID" as "JOB_ID",
"OEHR_EMPLOYEES"."SALARY" as "SALARY",
"OEHR_EMPLOYEES"."DEPARTMENT_ID"
from "OEHR_EMPLOYEES" "OEHR_EMPLOYEES"

7.

单击 Finish

8.

已成功创建交互式报表页面。在运行页面之前,您需要进行一些更改。单击 Edit Page

9.

在 Regions 下,选择 Interactive Report 链接。

10.

选择 Show All 选项卡。您需要提供一个标题名,因为调用该报表时和指定 DEPARTMENT_ID 时(尽管不显示 DEPARTMENT_ID 列)会将其用作筛选器名称。将 DEPARTMENT_ID 的标题更改为 Specified Department,然后为 Display Text As 选择 Hidden 并单击 Apply Changes

注意,由于要向该列传递值,因此不需要隐藏该列。如果向非隐藏的列传递了值,可以编辑生成的筛选器。如果将值传递给隐藏的列,则只能禁用或删除生成的筛选器,不能对其进行修改(且您的最终用户不能更改筛选器以查看其他部门)。

11.

现在您需要在 Department List 页面和该页面之间创建一个链接,并传递 Department ID。选择您的应用程序路径式导航栏。

12.

在本教程的上一主题中我们创建了该页面。选择 Department List 页面。

13.

在 Regions 下,选择 Interactive Report 链接。

14.

针对 DEPARTMENT_ID 选择 Hidden,针对 EMPLOYEES 列选择 Display as Text (escape special characters),然后针对 EMPLOYEES 列单击 Edit 图标。

15.

单击 Link 选项卡。

16.

您需要定义一个链接以显示各部门的员工数量,调用您刚创建的新页面,清除该页面上的缓存,重置该页上的交互式报表,以删除先前设置的可能与传递的筛选器冲突的筛选器。此外,您需要为隐藏的 DEPARTMENT_ID 传入一个值。要引用交互式报表中的某列,您需要在列的别名前添加“IR_”。

针对 Link Text 选择 [EMPLOYEES],针对 Page 输入 3(您刚创建的页面),然后在 Clear Cache 域中输入 3,RIR。在 Item 1 Name 域中输入 IR_DEPARTMENT_ID,然后针对 Value 选择 #DEPARTMENT_ID#。然后单击 Apply Changes

注:通过为项名称加上前缀 IR_(在本示例中为 IR_DEPARTMENT_ID),URL 项将与交互式报表关联,而不是页面上的项。

17.

单击 Run Page

18.

Employees 值现在有一个链接。单击其中一个数字。

19.

现在显示的是 Employees by Department 交互式报表,且在 Department 上创建了一个筛选器。注意,您不能单击以编辑筛选器(因为它创建在隐藏列上),但您可以通过取消选择复选框来禁用筛选器。

20.

因为禁用了筛选器,所以现在显示所有记录。单击开发人员工具栏中的 Edit Page

返回主题列表

在本部分中,您将向查询添加一个派生列。具体来说,您要使用 CASE 语句基于员工所作工作来确定其薪酬是否过低。然后使用这一派生列的值来创建一个高亮显示规则,从而高亮显示所有薪酬过低的员工。执行以下步骤:

1.

导航至 Employees by Department 页面(在上一部分中您最后所位于的页面)。在 Regions 下,选择 Employees by Department 链接。

2.

单击 Source 选项卡。

3.

将源代码更改为以下查询,然后单击 Apply Changes

注意,SQL 语句中的这一 CASE 语句用于判断员工的工资是否低于其工作的最低薪水。如果是,则将派生列的值 UnderPaid_Yes_No 设置为 Yes,否则设置为 No。开始将不显示派生列,但可以用于 Actions 菜单上的众多操作(如 Filter 和 Highlight)。

select (case when e.salary < j.min_salary then 'Yes' 
else 'No' end) UnderPaid_Yes_No,
e.first_name,
e.last_name,
e.email,
e.phone_number,
e.hire_date,
e.job_id,
e.salary,
e.department_id
from oehr_employees e,
oehr_jobs j
where e.job_id = j.job_id

4.

然后将向您的报表中添加其他列。单击 Apply Changes

5.

单击 Run Page

6.

随即显示报表。如果在运行时派生列出现在报表上,使用 Actions 菜单 > Select Columns 操作将列更改为 Do not Display,并将报表保存为默认报表。要显示薪酬过低的员工,选择 Actions 菜单,然后单击 Highlight

7.

针对 Name 输入 Underpaid Employees,针对 Background Color 选择 [yellow]。针对 Column 选择 UnderPaid Yes No,为 Expression 输入Yes,然后单击 Apply

8.

注意,薪酬过低的员工现在以黄色高亮显示。

返回主题列表

在本教程中,您学习了如何:

手动重置交互式报表
创建声明式筛选器
创建派生的预定义筛选器

返回主题列表

要了解有关 Application Express 的更多信息,您可以查看以下内容:

相关文档

说明

联机帮助

要访问该帮助,单击 Application Express 右上角处显示的 Help 按钮。搜索感兴趣的主题。

版本说明

这些说明包含 Oracle Application Express 文档中未包括的重要信息。

安装指南

该指南解释了如何安装和配置 Oracle Application Express。

两日以上开发人员指南

该指南向您介绍如何搭建一个开发环境或者访问一个与该指南一起使用的托管演示环境。然后将引导您构建一个最初的应用程序,对其进行修改并进行预览。

用户指南

该指南描述了如何使用 Oracle Application Express 开发环境构建和部署以数据库为中心的 Web 应用程序。通过使多个工作组能够构建和访问应用程序(如同它们在独立的数据库中运行),Oracle Application Express 将单个 Oracle 数据库转换为共享的服务。

高级教程

包含了分步指南的教程,介绍如何使用 Oracle Application Express 开发环境创建各种应用程序组件和整个应用程序。

返回主题列表

将鼠标置于该图标上可以隐藏所有的屏幕截图。