Oracle apex Oracle APEX-显示条件提示

Oracle apex Oracle APEX-显示条件提示,oracle-apex,oracle-apex-19.1,Oracle Apex,Oracle Apex 19.1,我有一个带有验证的表单,用于检查输入的名称是否已经存在于数据库中,当单击“提交”按钮时,我希望继续插入。如果验证成功,如果验证失败,则显示用户提示,如果用户确认,则继续更新现有记录。我知道如何一次做一个,但不知道如何有条件地做 如果我想显示提示,我可以在单击按钮时使用“重定向到URL”,并将提示设置为我想要的任何内容,但如何仅在验证失败时显示提示?您可以创建声明性验证。如果验证条件失败,您将看到定义的错误,而不是正常处理 在这种情况下,可以基于行的存在进行验证 如果所有验证都正常,那么页面处理将

我有一个带有验证的表单,用于检查输入的名称是否已经存在于数据库中,当单击“提交”按钮时,我希望继续插入。如果验证成功,如果验证失败,则显示用户提示,如果用户确认,则继续更新现有记录。我知道如何一次做一个,但不知道如何有条件地做


如果我想显示提示,我可以在单击按钮时使用“重定向到URL”,并将提示设置为我想要的任何内容,但如何仅在验证失败时显示提示?

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

在这种情况下,可以基于行的存在进行验证

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

所有的计算、验证和过程都可以是有条件的——要么是指定的按钮,要么是通常基于有效of:请求的条件


或者,当值已经存在时,表上的约束可能会失败,并使用APEX error函数处理该约束。当您可以依赖DB约束时,为什么要进行预检查?

根据后续评论,我建议如下:

  • 例如,在页面中添加一个隐藏项,P1\u NAME\u EXISTS。确保其值保护设置已禁用
  • 将提交按钮的操作更改为动态操作定义的
  • 在按钮的单击事件上创建动态操作
  • 使第一个操作成为执行PL/SQL代码的操作。使用具有要验证的名称值的项的名称填充“要提交的项”属性。然后输入查看名称是否重复所需的PL/SQL代码。在PL/SQL代码中将P1_NAME_EXISTS的值设置为“Y”或“N”(或类似布尔值)。然后将项的名称(P1_name_EXISTS)放入项中,以返回操作的属性
  • 添加第二个操作。将操作设置为执行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');
    }
    
  • 在PL/SQL进程更新隐藏项后,JavaScript代码将检查隐藏项的值。如果名称不存在,则只提交页面。如果名称已存在,则将提示用户。只有单击“确定”后,页面才会提交


    如果需要区分差异,您可以更改提交值的值。

    我进行预检查,因为如果值已经存在,我需要将其传达给用户,并获取他们的输入,然后根据他们的输入进行预检查,我指的是插入前的PL/SQL。如果您在提交表单之前正在讨论即时UI响应,请考虑丹的响应。您想从用户那里得到什么样的反馈?在他们提供您要查找的反馈后,会发生什么情况?因此,如果指定的名称已存在(在插入时),我需要提示用户是否要更新现有记录,如果用户单击“确定”,则我可以继续更新现有记录。如果记录不存在,则只需进行插入