Oracle APEX - отображение условного запроса - PullRequest
1 голос
/ 12 марта 2020

У меня есть форма с проверкой, чтобы проверить, существует ли введенное имя в базе данных, и когда нажата кнопка отправки, я хочу продолжить вставку, если проверка прошла успешно и если она не удалась, отобразить приглашение пользователя и, если Пользователь ОК, затем продолжите обновление существующей записи. Я знаю, как сделать один из них одновременно, но не уверен, как это сделать условно.

Если я хочу отобразить подсказку, я могу использовать redirect to URL при нажатии кнопки и установить подсказку для любого хотите, но как отображать подсказку только при сбое проверки?

Ответы [ 2 ]

1 голос
/ 13 марта 2020

На основании последующих комментариев я бы порекомендовал следующее:

  1. Добавить скрытый элемент на страницу, например, P1_NAME_EXISTS . Убедитесь, что параметр Значение защищено отключен.
  2. Измените Действие кнопки отправки на Определено Dynami c Действие .
  3. Создание действия Dynami c для события нажатия кнопки.
  4. Создание первого действия Выполнение действия PL / SQL Код . Заполните свойство Items для отправки именем элемента, значение которого вы хотите проверить sh. Затем введите код PL / SQL, необходимый для проверки того, является ли имя дубликатом. Установите значение P1_NAME_EXISTS на «Y» или «N» (или аналогичные логические значения) в коде PL / SQL. Затем введите имя элемента (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');
    }
    

Код JavaScript проверит значение скрытого элемента после PL / SQL процесс обновляет его. Если имя еще не существует, то страница будет просто отправлена. Если имя уже существует, пользователю будет предложено. Страница будет отправлена ​​только в том случае, если они нажимают «ОК».

Вы можете изменить значение отправляемых значений, если вам необходимо указать разницу.

0 голосов
/ 12 марта 2020

Вы создаете декларативную валидацию. Если ваше условие проверки не выполнено, вы увидите ошибку, которую вы определяете, вместо обычной обработки.

В этом случае вы можете иметь проверку на основе существования строки.

Если все проверки выполнены в порядке, тогда начнется обработка страницы.

Все вычисления, проверки и процессы могут быть условными - либо назначенная кнопка, либо условие, часто основанное на действительном: REQUEST.

Или , вы можете иметь ограничение на таблицу, которое не выполняется, когда значение уже существует, и обработать это с помощью функции ошибок APEX. Зачем делать предварительную проверку, когда можно положиться на ограничения БД?

...