Oracle Apex 20.2生日日历按姓名搜索实现咨询
在Oracle Apex 20.2中实现生日日历的姓名搜索功能
核心实现逻辑
通过添加搜索过滤条件,结合你已有的选择列表和流程,将匹配姓名的生日数据展示在指定列表中,具体步骤如下:
一、添加姓名搜索组件
- 文本搜索框:在生日日历所在页面新增一个文本字段(Item类型选
Text Field),命名为P_[页面号]_NAME_SEARCH,提示文字设为“按姓名搜索”。 - 关联选择列表:如果要和已创建的选择列表结合,修改选择列表的LOV查询,加入姓名模糊匹配逻辑:
接着设置搜索文本字段的「提交时刷新」属性为该选择列表,实现输入姓名后自动过滤选择列表选项。SELECT name AS display_value, id AS return_value FROM 你的生日数据表 WHERE name LIKE '%' || :P_[页面号]_NAME_SEARCH || '%' ORDER BY name
二、配置结果展示列表
以交互式列表为例(也可用经典报表):
- 在页面添加交互式列表,数据源选择你的生日数据表,SQL查询加入搜索过滤条件:
SELECT id, name, birthday, 其他需要展示的字段 FROM 你的生日数据表 WHERE 1=1 AND (:P_[页面号]_NAME_SEARCH IS NULL OR name LIKE '%' || :P_[页面号]_NAME_SEARCH || '%') -- 加入你已有选择列表的过滤条件,比如:AND department_id = :P_[页面号]_你的选择列表项 ORDER BY birthday - 配置列表布局,将姓名、生日等字段设置为显示项;设置列表的「刷新条件」为搜索字段或选择列表值变化时自动刷新。
三、调整现有流程
针对你已编写的流程,需同步更新逻辑:
- 修改流程的触发条件,加入搜索字段的判断,比如:
:P_[页面号]_NAME_SEARCH IS NOT NULL OR :P_[页面号]_你的选择列表项 IS NOT NULL。 - 流程中涉及数据查询的SQL语句,都要加入姓名模糊匹配条件,确保只处理搜索匹配的记录,例如:
SELECT * FROM 你的生日数据表 WHERE name LIKE '%' || :P_[页面号]_NAME_SEARCH || '%' AND birthday = TRUNC(SYSDATE) + :P_[页面号]_提前天数参数
四、优化用户体验
- 给搜索文本字段开启「回车提交」,用户输入姓名后按回车即可触发搜索。
- 设置列表的「无数据时显示」文本,比如“未找到匹配姓名的生日记录”,提升友好度。
内容的提问来源于stack exchange,提问作者Sergey
相关产品推荐
相关产品推荐

