使用 Oracle APEX 构建自定义报告





5.00/5 (1投票)
本文介绍了创建带自定义搜索区域的报告的步骤。
引言
Oracle Application Express (Oracle APEX) 是 Oracle 数据库的快速 Web 应用程序开发工具。它非常适合主要由创建、读取、更新和删除操作组成的 CRUD 应用程序。在本文中,我将介绍使用 Oracle APEX 创建自定义报告的步骤。
Oracle APEX 提供了一个基于 Web 的 UI 来创建报告。基本上,它允许您创建经典报告和交互式报告。通过创建交互式报告,您可以允许最终用户像在以下示例报告中那样交互式地过滤数据。
但是,为了使用这些交互功能,最终用户需要对 Oracle APEX 有一些了解,而且我认为它不适合组织中的高级管理人员。此外,内置过滤器对日期数据类型效率不高。因此,在接下来的几节中,我将介绍创建交互式报告的步骤,然后将其应用自定义过滤器区域。下面是即将创建的自定义过滤器的屏幕截图
创建标准交互式报告
我假设您已经创建了一个 Oracle APEX 应用程序。如果没有,请点击应用程序生成器菜单,然后点击创建应用程序按钮,然后按照其指示一直操作到完成步骤。以下步骤是关于创建报告的。
- 步骤 1:点击您的应用程序以打开它。
- 步骤 2:点击创建页面按钮。
- 步骤 3:选择报告单选按钮。点击下一步。
- 步骤 4:选择交互式单选按钮。点击下一步。
- 步骤 5:在“页面名称”和“区域名称”文本框中都输入“客户报告”。点击下一步。
- 步骤 6:选择*不使用选项卡*。点击下一步。
- 步骤 7:在文本区域中输入以下 SQL。在*链接到单行视图*列表中选择否。点击下一步。
select
c.CUSTOMER_ID,
CUST_FIRST_NAME || ' ' || CUST_LAST_NAME as NAME,
CUST_STATE as STATE_ID,
STATE_NAME as STATE,
PHONE_NUMBER1 as PHONE,
CUST_EMAIL as EMAIL,
ORDER_ID,
ORDER_TIMESTAMP
from DEMO_CUSTOMERS c
join DEMO_ORDERS o on c.CUSTOMER_ID = o.CUSTOMER_ID
join DEMO_STATES s on c.CUST_STATE = s.ST
现在您已经创建了一个标准的交互式报告。
关闭默认搜索栏
自定义搜索区域的第一步是按照以下步骤关闭报告的默认过滤功能
- 步骤 1:点击应用程序下的报告。
- 步骤 2:在页面渲染区域,展开“客户报告” > “区域” > “正文”节点。然后右键单击“客户报告”区域,并在上下文菜单中选择“编辑报告属性”菜单。
- 步骤 3:点击搜索栏选项卡,然后在“包含搜索栏”列表中选择否。
完成此步骤后,您已关闭默认搜索栏。
创建自定义过滤器区域
现在,我们可以使用以下标准创建自己的过滤器区域:客户名称(文本框)、州(下拉列表)和订单日期(从日期 – 到日期)。以下是步骤
- 步骤 1:点击应用程序下的报告。
- 步骤 2:在页面渲染区域,展开“客户报告”节点。右键单击“区域”节点,并在上下文菜单中选择“创建”菜单。
- 步骤 3:选择 HTML 单选按钮。点击下一步。
- 步骤 4:再次选择 HTML 单选按钮。点击下一步。
- 步骤 5:在“标题”文本框中输入“搜索”。在“区域模板”下拉列表中选择“报告过滤器 – 单行”。在“序列”文本框中输入“5”(以便此过滤器区域显示在序列号为 10 的数据区域之前)。点击下一步。
- 步骤 6:将 HTML 文本区域留空。点击创建区域。
您刚刚创建了一个空的搜索区域。如果您现在运行报告,您将看到搜索图标但没有任何标准。请按照以下步骤将这些标准添加到您的搜索区域
- 步骤 1:右键单击“搜索”区域。在上下文菜单中选择“创建页面项”菜单。
- 步骤 2:选择文本字段单选按钮。点击下一步。
- 步骤 3:在“项名称”文本框中输入“P2_Name”。点击下一步。
- 步骤 4:在“标签”文本框中输入“名称”。在“字段宽度”文本框中输入“10”。在“是否在新行开始”下拉列表中选择否(如果您的搜索区域中有太多项无法在一行中显示,请选择是开始搜索行)。点击下一步。
- 步骤 5:选择默认值,然后一直点击下一步直到结束。点击创建项。
- 步骤 6:右键单击“搜索”区域。在上下文菜单中选择“创建页面项”菜单。
- 步骤 7:选择列表单选按钮。点击下一步。
- 步骤 8:在“项名称”文本框中输入“P2_State”。点击下一步。
- 步骤 9:在“标签”文本框中输入“州”。在“是否在新行开始”中选择否。点击下一步。
- 步骤 10:选择默认值。点击下一步。
- 步骤 11:在“空值显示值”文本框中输入“--所有州 --”。在“值列表查询”文本区域中输入以下 SQL。点击下一步。
您刚刚完成了名称标准的创建。以下步骤是创建州下拉列表
select ST, STATE_NAME
from DEMO_STATES
您已完成州标准的创建。请按照以下步骤创建从订单日期标准
完成这些步骤后,您应该已经准备好所有标准。让我们创建运行按钮,以便我们可以基于这些标准刷新数据。
现在运行报告,选择一些标准,然后点击运行按钮,但……什么也没发生。这是因为我们还没有将这些标准连接到报告查询。让我们更新查询。
select
c.CUSTOMER_ID,
CUST_FIRST_NAME || ' ' || CUST_LAST_NAME as NAME,
CUST_STATE as STATE_ID,
STATE_NAME as STATE,
PHONE_NUMBER1 as PHONE,
CUST_EMAIL as EMAIL,
ORDER_ID,
ORDER_TIMESTAMP
from DEMO_CUSTOMERS c
join DEMO_ORDERS o on c.CUSTOMER_ID = o.CUSTOMER_ID
join DEMO_STATES s on c.CUST_STATE = s.ST
where (:P2_Name is null or lower(CUST_FIRST_NAME) || ' ' ||
lower(CUST_LAST_NAME) like '%' || lower(:P2_Name) || '%') and
(:P2_STATE is null or CUST_STATE = :P2_STATE) and
(:P2_FROM is null or ORDER_TIMESTAMP >= :P2_FROM) and
(:P2_TO is null or ORDER_TIMESTAMP <= :P2_TO)
一些小的定制
如当前报告所示,将有两个州列,我们应该使用以下步骤隐藏州代码列
- 步骤 1:右键单击“客户报告”区域并选择“编辑报告属性”菜单。
- 步骤 2:在列属性区域,点击 STATE_ID 列前面的编辑(铅笔)图标。
- 步骤 3:在“显示类型”列表中选择隐藏。
如果您现在运行报告,此列将消失。
您还应该对报告做的另一件事是更新 ORDER_TIMESTAMP 的日期格式。为此,请按照州代码列的前两个步骤进行操作。然后在“列定义”页面,在“数字/日期格式”文本框中输入“MM-DD-YYYY”。
最后,您的报告将如下所示
如果有人需要帮助或对 Oracle APEX 有任何疑问,都欢迎提出,任何建议或修改也同样受欢迎。