1

我有一个带有验证的表单,以检查输入的名称是否已存在于数据库中,当单击提交按钮时,如果验证成功,我想继续插入,如果失败,则显示用户提示,如果用户确定就可以了,然后继续更新现有记录。我知道如何一次执行其中一项,但不确定如何有条件地执行此操作。

如果我想显示提示,我可以redirect to URL在按钮单击上使用并将提示设置为我想要的任何内容,但是如何仅在验证失败时显示提示?

4

2 回答 2

1

根据后续评论,我建议以下内容:

  1. 例如,将隐藏项添加到页面P1_NAME_EXISTS。确保禁用其值保护设置。
  2. 将提交按钮的Action更改为Defined by Dynamic Action
  3. 在按钮的单击事件上创建一个动态操作。
  4. 使第一个动作成为执行 PL/SQL 代码动作。使用具有您希望验证的名称值的项目的名称填充要提交的项目属性。然后输入查看名称是否重复所需的PL/SQL 代码。在 PL/SQL 代码中将 P1_NAME_EXISTS 的值设置为“Y”或“N”(或类似的布尔值)。然后将项目的名称 (P1_NAME_EXISTS) 放入操作的要返回的项目属性中。
  5. 添加第二个动作。将操作设置为执行 JavaScript 代码在代码字段中输入如下代码:

    var nameExists = $v('P1_NAME_EXISTS') === 'Y';
    
    if (!nameExists) {
      apex.page.submit('SAVE');
    } else {
      apex.page.confirm('This name already exists. Would you like to update the existing entry?', 'SAVE');
    }
    

The JavaScript code will check the value of the hidden item after the PL/SQL process updates it. If the name doesn't already exist, then the page will just be submitted. If the name already exists, then the user will be prompted. Only if they click okay will the page be submitted.

You could change the value of the submit values if you needed to tell the difference.

于 2020-03-12T22:33:22.670 回答
0

您创建一个声明性验证。如果您的验证条件失败,您将看到您定义的错误,而不是正常处理。

在这种情况下,您可以根据行的存在进行验证。

如果所有验证都正常,则页面处理将开始。

所有计算、验证和过程都可以是有条件的 - 可以是指定的按钮,也可以是通常基于有效 :REQUEST 的条件。

或者,您可以在值已经存在时对失败的表进行约束,并使用您的 APEX 错误函数来处理它。当您可以依赖数据库约束时,为什么要进行预检查?

于 2020-03-12T13:20:24.690 回答