如何显示和更新我在 Apex 交互式报告中添加/插入的记录

问题描述 投票:0回答:2

我创建了一个交互式报告来添加/更新/删除自定义数据库表中的员工信息记录。

我的最终用户要求是在 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 提交页面

现在我的问题是当我单击复选框时如何进行更新, 我希望我的记录显示在表单中,因为当前当我单击复选框时,表单为空

oracle-apex
2个回答
1
投票

要创建新记录(使用第 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值,创建预渲染过程。或者使用向导重新开始(我更喜欢这个选项)。


1
投票

@Littlefoot 已经给出了一个完美的答案,这里只是一些额外的步骤,可能会指导您找到解决方案(这是 Littlefoot 答案中的“或从向导开始”部分)。我建议您在开箱即用时查看 apex 如何生成其页面。仅用于测试,请按照以下步骤操作

  • 创建一个“交互式报告”类型的新页面,并确保选中“包含表单页面”属性
  • 为表单页面命名并选择“PER_PEOPLE”作为表/视图名称
  • 在对话框的第2页中,选择PER_PEOPLE的主键列:person_id
  • 点击“创建页面”

您现在拥有一个工作表格和报告,您可以根据您的具体要求进一步定制。它应该能让您很好地了解如何在 APEX 中配置表单和报告 并且可以为您节省大量时间

在报告页面中注意如何:

  • 编辑链接以表单页面为目标并传递id
  • CREATE 按钮将表单页面作为目标,没有 id

在表单页面

  • 不需要自定义代码来初始化当前记录的表单数据。相反,使用“表单 - 初始化”类型的本机进程。
  • 不使用动态操作来执行插入 - 对于表单来说这是一种不好的做法。避免它。
  • 不需要自定义代码来执行插入或更新。相反,使用“表单 - 自动行处理”类型的本机进程。

研究这些页面并将类似的逻辑应用到您自己的页面。这将是一个更好的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.