首页 > 解决方案 > 如何在 Oracle APEX 中插入和更新插入的行?

问题描述

我希望我的“创建”按钮在表格上插入一行,并在插入后更新该行。我需要先插入该行然后更新的原因是因为我要更新的某些列首先取决于那里的值。例如,我想更新“毛利率”列,但“毛利率”= Payrate + 其他内容。如果我没有“Payrate”列中的值,那么我无法更新“Gross Margin”,因为它取决于它。

我试过的:

  1. ) 创建一个动态动作,如果单击“创建”按钮就会触发。如果其单击为真,则运行“执行服务器端代码”类型的 2 个真动作,即插入语句,另一个是更新语句。我确保 Insert 具有第一个序列(它首先运行)然后是更新(它运行第二个)。请参见下图“创建”按钮的设置。

在此处输入图像描述

请看下图“动态动作”的设置

在此处输入图像描述

请参阅下面的“插入操作”设置

在此处输入图像描述

“更新操作”的以下设置

在此处输入图像描述

2.)我也尝试过创建一个“进程”,单击时绑定到“创建”按钮,但它没有工作。

我愿意接受所有建议,并在此先感谢您!

标签: oracle-apexoracle-apex-5.1

解决方案


我在 apex.oracle.com 上创建了一个工作区来说明我的答案:

工作区:SO_HELP,用户名:so_68399404,密码:so_68399404

应用程序 22384(演示 - EMP / DEPT)是在标准 emp/dept 示例数据集上生成的应用程序。在“员工”报表中,有一个“创建”按钮,但也可以使用编辑图标编辑员工。“创建”按钮和“编辑”链接都指向同一个表单(第 4 页)。薪水取决于工作。如果工作是 MANAGER,则薪水设置为 5000,否则薪水增加 1。与您的要求类似。我通过代码提交后计算做到了这一点

CASE WHEN :P4_JOB = 'MANAGER' THEN 5000 ELSE :P4_SAL + 1 END

不需要其他代码。没有动态操作,没有自定义流程。所有更新都由“自动行处理 - DML”类型的进程处理。使用上面的凭据登录并查看。如果这不是您所需要的,请准确解释此应用程序的不同之处 - 或针对该数据创建新表单/报告以说明您的问题。

我可以建议你这样问你的问题吗?从代码中提取问题并使用示例数据集进行说明。没有人知道你的实际数据,每个人都知道 emp/dept 模式。这样可以避免评论中无休止的讨论。


推荐阅读