在APEX中设置未显示的数据库字段的正确方法

时间:2019-02-11 17:26:06

标签: oracle oracle-apex oracle-apex-5.1

我对何时在APEX中使用动态操作,计算和流程感到困惑。

假设我有一个 PERSON 表,其中包含以下字段: -NUM_ID(未显示的键,如GUID) -CHAR_ID(唯一,显示且可输入) -姓名

PERSON表通过NUM_ID字段连接到 EMPLOYEE 表。雇员表具有以下字段: -NUM_ID(未显示的键) -HIRE_DATE(显示并可以输入)

我有一个基于EMPLOYEE表的APEX表格。我有2个我想执行的功能:

  1. 显示 中显示现有记录时,表单应在该记录中显示NUM_ID的CHAR_ID和NAME。

  2. 创建 新记录时,将输入CHAR_ID。表单应从PERSON记录中检索/选择NAME和NUM_ID,显示该人的NAME,并设置未显示的NUM_ID,因此在保存/创建EMPLOYEE记录时将设置该字段。

为这两个任务中的每一个使用动态操作是否合适?

例如,我会有一个:

  • GET_CHAR_ID_AND_NAME 动态操作,当NUM_ID更改(查询记录时)和

  • 时执行
  • GET_NUM_ID_AND_NAME 动态操作,当CHAR_ID字段更改时(在插入时)执行。

GET_CHAR_ID_AND_NAME动态操作会将“抑制更改事件”设置为“是”,因此它不会触发GET_NUM_ID_AND_NAME动态操作,从而导致循环。

几年前我曾与APEX合作,但是却忘记了我以前如何执行这些类型的功能。我想我可能会尝试错误地使用动态操作,并且某些功能已内置到页面处理中?

任何一般性建议或技巧都将不胜感激。

1 个答案:

答案 0 :(得分:0)

从我的角度来看,做这些事情的最简单方法是(使用向导并)创建将要创建的在表格上带有表单的报告

  • 用于查看现有数据的交互式报告(IR);它使您可以导航到详细信息(即 form ),并包含CREATE按钮以创建新记录
  • 从IR调用的表格,用于
    • 输入新值
    • 更新或删除现有行

您无需编写任何代码;默认情况下,它将起作用。看起来不会很漂亮,但是可以。 Apex将创建适当的流程(自动行获取和处理)。主要的“缺点”是您将看到ID,而不是这些ID后面的值。

现在,我们在您的问题上:如何“使用”(设置)ID,但“显示”其描述?

我更喜欢使用选择列表项目类型。它的源可以是SQL查询(在多个选项中),该SQL查询必须返回两个值:display(即“名称”或“ description”)和return(即“ ID”)。例如:

select p.name     disp_value,
       e.num_id   ret_value
from person p join employee e on e.num_id = p.num_id
order by p.name

基本上,您无需编写任何代码,也无需创建自己的函数即可执行 -Apex会为您完成此操作。

我建议您尝试一下,看看它如何工作。正如您已经使用过Apex一样,也许稍作打字(并阅读我刚才说的话)就会带回回忆。