#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 = «ОБНОВИТЬ». Таким образом, вы сможете извлечь выгоду из этой функции. Я не проверял это, но это должно сработать.