我创建了一个交互式报告来添加/更新/删除自定义数据库表中的员工信息记录。
我的最终用户要求是在 EMPNO 字段中输入员工编号后,oracle 标准表中的所有详细信息(例如员工姓名、婚姻状况、性别、生日)都必须在表单中自动生成,他们只会手动输入位置名称和退出方式。
现在我创建了3个页面:1.主页,2.添加页面,3.更新页面
第 1 页(主页) 我这里有选择 SQL 带复选框
在第 2 页(添加页面), 在页面处理部分 我有
事件添加记录 来源:db,plsql代码 这是我的示例代码:
BEGIN
INSERT INTO EMPINFOTBL
(PERSON_ID,
EMPLOYEE_NUM,
EMPLOYEE_NAME,
MARITAL_STATUS,
BDATE,
GENDER,
LOCATION_NAME,
MODE_OF_EXIT
)
VALUES
(SELECT PERSON_ID FROM
PER_PEOPLE_X WHERE EMPLOYEE_NUM = :P2_EMPLOYEE_NUM),
(SELECT EMPLOYEE_NUMBER ID FROM
PER_PEOPLE_X WHERE EMPLOYEE_NUM = :P2_EMPLOYEE_NUM),
(SELECT FULL_NAME FROM
PER_PEOPLE WHERE EMPLOYEE_NUM = :P2_EMPLOYEE_NUM),
(SELECT MARITAL_STATUS FROM
PER_PEOPLE WHERE EMPLOYEE_NUM = :P2_EMPLOYEE_NUM),
(SELECT DATE_OF_BIRTH FROM
PER_PEOPLE WHERE EMPLOYEE_NUM = :P2_EMPLOYEE_NUM),
(SELECT GENDER FROM
PER_PEOPLE WHERE EMPLOYEE_NUM = :P2_EMPLOYEE_NUM),
:P2_LOCATION_NAME,
:P2_MODE_OF_EXIT
);
END;
按钮 通过动态操作保存 当点击添加按钮时如果 True 提交页面
现在我的问题是当我单击复选框时如何进行更新, 我希望我的记录显示在表单中,因为当前当我单击复选框时,表单为空
要创建新记录(使用第 2 页),您需要创建一个基于
per_people
表的选择列表项;您可以显示任何您想要的信息,但您会返回员工 ID:
select full_name as display_value,
employee_num as return value
from per_people
order by full_name;
选择所需人员后,在
P2_LOCATION_NAME
和 P2_MODE_OF_EXIT
项目中输入值。当您点击“保存”按钮(提交页面)时,运行该过程(我修改了您编写的内容;应该更简单):
INSERT INTO empinfotbl (person_id,
employee_num,
employee_name,
marital_status,
bdate,
gender,
location_name,
mode_of_exit)
SELECT person_id,
employee_number,
full_name,
marital_status,
date_of_birth,
gender,
:P2_LOCATION_NAME,
:P2_MODE_OF_EXIT
FROM per_people
WHERE employee_num = :P2_EMPLOYEE_NUM;
至于更新现有值:我再次建议您使用向导,因为它创建您需要的一切 - 表单页面基于
empinfotbl
表,而交互式报告中的“编辑”按钮将 ID 值发送到表单页面,该表单页面预渲染进程获取与通过传递的 ID 标识的员工相关的数据。
如果您创建了自己的页面,则所有操作都必须由您自己完成。
你说:
我希望我的记录显示在表单中,因为当前当我单击复选框时表单为空
表单项为空,因为 Apex 不知道要获取什么。正如我所说:传递ID值,创建预渲染过程。或者使用向导重新开始(我更喜欢这个选项)。
@Littlefoot 已经给出了一个完美的答案,这里只是一些额外的步骤,可能会指导您找到解决方案(这是 Littlefoot 答案中的“或从向导开始”部分)。我建议您在开箱即用时查看 apex 如何生成其页面。仅用于测试,请按照以下步骤操作
您现在拥有一个工作表格和报告,您可以根据您的具体要求进一步定制。它应该能让您很好地了解如何在 APEX 中配置表单和报告 并且可以为您节省大量时间
在报告页面中注意如何:
在表单页面
研究这些页面并将类似的逻辑应用到您自己的页面。这将是一个更好的应用程序。