Использовать Oracle APEX LOVs для инициализации нескольких элементов Страницы? — ВЕРШИНА 21.1

#oracle-apex

Вопрос:

Я понимаю, что поведение LOVs по умолчанию выглядит следующим образом:

 SELECT business_desc as display_val,
       business_id as return_val
  FROM businesses
 

При этом, прикрепленном к элементу страницы выбранного типа P1_BUSINESS , отобразится список, и при выборе строки списка присвоите business_id значение элементу страницы P1_BUSINESS .

Есть ли способ создать список значений для задания значения более чем одного элемента страницы, который не отображается? Используя приведенный ниже SQL:

 SELECT business_desc as display_val,
       business_id as return_val,
       form_type,
       individual_flag
  FROM businesses
 

Где теперь, когда пользователь выбирает что-то из P1_BUSINESS него, он устанавливает значения этой строки/записи следующим образом:

  • P1_BUSINESS = business_id (как это делается по умолчанию)
  • P1_FORM_TYPE = form_type ( P1_FORM_TYPE является элементом скрытой страницы)
  • P1_IND_FLAG = individual_flag ( P1_IND_FLAG является элементом скрытой страницы)

Я знаю, что могу сделать это с onchange помощью динамического действия, но мне просто любопытно, можно ли это сделать внутри LOV или выбрать элемент страницы ( P1_BUSINESS ) декларативно.

Комментарии:

1. Обычный компонент «Список значений» не имеет такой функции, однако во всплывающем окне она есть. Найдите дополнительные выходные данные apex lov — есть несколько блогов, показывающих, как это работает.

2. Да, я видел их, но, основываясь на том, что я прочитал, у меня сложилось впечатление, что вам нужно «Отобразить» и эти другие поля. Предполагая, что это не так? Будем углубляться в всплывающие окна. Thx.

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

4. не стесняйтесь добавлять в качестве ответа, и я отдам должное thx…

5. Сделаю утром — сейчас нет времени 🙂

Ответ №1:

В разделе Общие компоненты > Список значений есть атрибут «Дополнительные столбцы отображения». В тексте справки на этом экране говорится, что все дополнительные столбцы отображения могут быть определены для типов элементов, поддерживающих несколько столбцов отображения, например всплывающее окно. Для типов элементов, которые не поддерживают несколько столбцов, они будут игнорироваться. При добавлении дополнительных отображаемых столбцов убедитесь, что возвращаемый столбец включен в список столбцов. Для столбца возврата можно установить значение «Видимый нет» и «Доступный для поиска Нет», если вы не хотите, чтобы он отображался пользователям.

Пример использования выборочных данных emp/dept:

  • Создайте список значений в таблице emp с возвратом empno и отображением ename . Сохранить.
  • Отредактируйте LOV и нажмите Дополнительные столбцы отображения > Выберите столбцы>. Выберите job в качестве дополнительного столбца.
  • В IG установите Видимое и доступное для поиска значение «Нет» и Примените изменения.
  • На странице создайте 2 элемента страницы: P1_EMPNO (введите всплывающее окно) и P1_JOB (введите текстовое поле)
  • Для P1_EMPNO этого выберите LOV , созданный выше, как общий компонент > Список значений и добавьте > JOB:P2_JOB в разделе Настройки > Дополнительный вывод>. ЗАДАНИЕ-это имя/псевдоним дополнительного столбца, а P2_JOB-это элемент, с которым он должен сопоставляться.
  • Теперь, когда вы запускаете страницу, обратите внимание, что P1_JOB она заполняется при выборе значения для P1_EMPNO

Комментарии:

1. thx @Koen, это помогло мне заставить его работать, но я понимаю, что теряю возможность использовать динамический SQL в источнике LOV, настроив его в общих компонентах, а не просто используя инструкцию SQL (или функцию пакета, которая возвращает строку SQL). Мне придется немного пересмотреть свой дизайн. Если «форма заявки» AI_FLOW_TYPE = NEW , которую я хочу использовать LOV_NEW , если AI_FLOW_TYPE = RENEW … я хочу использовать LOV_RENEW . Будет продолжать играть вокруг

2. Вы можете сделать запрос общего компонента зависимым от элемента страницы — это работает. выбирать… ИЗ таблицы, ГДЕ :AI_FLOW_TYPE = «НОВОЕ» ОБЪЕДИНЕНИЕ ВСЕХ ВЫБРАННЫХ … ИЗ таблицы, ГДЕ :AI_FLOW_TYPE = «ОБНОВИТЬ». Таким образом, вы сможете извлечь выгоду из этой функции. Я не проверял это, но это должно сработать.