ORACLE ЗАЯВЛЕНИЕ APEX IF В ФОРМЕ - PullRequest
0 голосов
/ 18 июня 2020

Я новичок в APEX и пытаюсь изменить значение элемента в форме на основе условия if. Может ли кто-нибудь объяснить мне на простом примере, как я могу использовать оператор IF / ELSIF / ELSE для действия Dynami c, чтобы вычислить значение и использовать это значение для элемента формы?

Для пример

if itemA > 0 then
  ItemB = ItemA + 5
elsif ItemA =0 ItemB= ItemB + 1

Также как я могу использовать PL / SQL для обновления некоторых строк в таблице, используя значение из моего элемента в форме с действием Dynami c? Я пытался выполнить PL / SQL Code в Идентификации Dynami c Action, но ничего не произошло. Я также попытался установить значение действия идентификации, используя в качестве типов набора (PL / SQL выражение, PL / SQL тело функции, но все равно ничего не происходит). Спасибо

1 Ответ

1 голос
/ 18 июня 2020

добро пожаловать в APEX.

Итак, во-первых, если вы хотите сослаться на элемент на странице, он обычно имеет имя типа P1_NEW. Где 1 - это номер страницы, а NEW - это то, что вы обычно меняете, чтобы отразить то, что он есть на самом деле.

Вы ссылаетесь на этот элемент, помещая: перед ним.

Таким образом, код будет быть примерно таким:

IF :P1_ITEM_A > 0  THEN
  :P1_ITEM_B := :P1_ITEM_A + 5;
ELSIF :P1_ITEM_A = 0 THEN
  :P1_ITEM_B := :P1_ITEM_B + 1;
END IF;

Вам всегда нужно завершать sh оператор с помощью; и IF должен быть закрыт, поэтому вам нужно закончить его "END IF;" И вы также должны отправить элемент, если код находится в Dynami c Action. Отправка в основном означает, что значение фактически сохраняется, а не просто отображается. На это вы наткнетесь, например, если хотите, чтобы два пустых элемента, в которые вы записываете, и кнопку, заполняющую третий элемент на основе первых двух, если первые два не отправлены, то действие Dynami c будет видеть их пустыми.

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

РЕДАКТИРОВАТЬ ДЛЯ ОТВЕТА КОММЕНТАРИИ: Я думаю, что у вас есть интерактивный отчет с формой. Это означает, что вы щелкаете значок карандаша в таблице, и открывается форма с этими тремя элементами, кнопками СОХРАНИТЬ и ОТМЕНА.

Во-первых, одна вещь, которую вы всегда должны пробовать при работе с DA (динамические c действия ), чтобы DA запускал предупреждение о действии. Таким образом вы увидите, сработало ли оно на самом деле.

Ваша установка должна сработать нормально. Как только вы подтвердите, что DA запускается, установите Action на код PL SQL. Из того, что вы мне сказали, я думаю, вам следует установить элементы для отправки: P5002_OverTimes, P5002_Salary

и элементы для возврата: P5002_OverTimes, P5002_Salary

И код PL SQL:

IF :P5002_OverTimes > 5 THEN
  :P5002_Salary := :P5002_Salary + 5;
ELSIF :P5002_OverTimes = 5 THEN
  :P5002_Salary := :P5002_Salary + 2;
ELSE
  :P5002_Salary := :P5002_Salary + 1;
END IF;

Затем, просто чтобы убедиться, что я хочу добавить еще одно действие, также код PL SQL, код просто «NULL;» и я снова отправляю элементы.

Затем изменение должно быть видно на странице (элементы должны иметь новые значения), и вы можете сохранить, и эти значения будут go в таблице.

Оператор IF находится в правильном месте для этого сценария. Вы, вероятно, думаете о состоянии на стороне клиента. Это значит, что вы можете настроить DA для срабатывания только при выполнении определенного условия. В вашем случае теоретически у вас может быть три DA с условиями на стороне клиента, которые проверяют значение OverTime, один, где VALUE> 5, один, где VALUE = 5, и один, где VALUE <5, и у каждого из них есть действие Set Value. Это можно было бы сделать, но это просто излишне сложно и требует больше работы, чем нужно. </p>

...