Попытка создать столбец ссылок APEX, который запрашивает отчет
По сути, скажем, у меня есть отчет A, и я хочу добавить к нему столбец ссылок, и я установил его целевую страницу в приложении... страница, на которую он ссылается, имеет другой отчет (назовем его B)
Могу ли я как-то сделать так, чтобы столбец ссылок таблицы A открывал страницу с отчетом B со строками, которые имеют одинаковое значение столбца для одного из своих столбцов?
Пример здесь:
Name Num1 Num2
--------------
A 5 3
B 3 3
C 4 2
В
Name Quantity Serial
--------------------
D 2 3
E 1 8
F 4 6
Поэтому, если я щелкаю по столбцу ссылки для строки A, я хочу, чтобы он открыл отчет B и отображал только те строки, в которых его Num2 = Serial, поэтому отображалась бы только строка D, поскольку она единственная, равная 3
2 ответа
Использование привязки отчетов для фильтрации других выходов отчета APEX
Я немного повеселился с этим, хотя. Вещи "А" и "В" были довольно сухими, поэтому я решил создать набор данных, который был бы более интересным и, возможно, более понятным для остальных из нас...:) Так экосистема данных была нарушена. вниз, и то, как я выполнил требования ОП.
Схема испытаний:
Добро пожаловать на производственные мощности пищевого комбината "Рецепт Стэк". Схема схемы и ERD (диаграмма отношений сущностей) ниже, с образцами данных, использованными для этой демонстрации:
Отношения данных следующие:
- Персонал в Stack Food-Works ведет инвентаризацию всех ингредиентов для типов блюд и готовых продуктов, которые они производят. Каждый ингредиент имеет уникальный идентификатор (
INGREDIENT_ID
) и персонал отслеживает количество каждого предмета в своей кладовой. - Каждый ингредиент может использоваться в нескольких рецептах, но они будут использоваться ровно один раз для данного рецепта.
-
ENTREE_RECIPE
Таблица имеет составной ключ, что означает комбинацию двух частей этого составного ключа (ENTREE_NAME
а такжеINGREDIENT_SEQ
) это должно быть уникальным. - Существует взаимосвязь FOREIGN KEY между
INGREDIENT_ID
значения обеих таблиц.
Требования к отображению отчета (APEX и элементы дизайна SQL)
Выбор элемента из первого отчета используется в качестве входных данных и критериев ограничения / фильтрации для второго отчета.
Случай пользователя № 1:
- Пользователь выбирает идентификатор ингредиента из списка доступных ингредиентов в кладовой.
- Входные данные из (1) фильтруют выходные данные ОТЧЕТА О ПОЛУЧЕНИИ. Это список всех рецептов, которые имеют выбранный ингредиент в своей формуле.
Случай пользователя № 2:
- Пользователь выбирает
ENTREE_NAME
из отчета рецепта.ENTREE_NAME
используется для доставки третьего отчета: ФОРМУЛА РЕЦЕПТА, который является полным рецептом для позиции, выбранной из предыдущего отчета.
Инструменты тестирования
(Обычно они нужны для более сложных страниц, так что это хорошее начало для использования или разработки для более простых...)
Я сделал свой собственный, но вы также можете ссылаться на SESSION
ссылка на панели инструментов разработчика в нижней части страницы APEX вашего запущенного приложения (когда оно отображается).
Вот моя идея; это область заголовка, которая также имеет кнопку RESET
введите значения, чтобы я мог очистить кэш и повторно протестировать или попробовать другие примеры. Позже я покажу, как вы можете использовать эту ссылку, чтобы увидеть, что происходит. Вы можете увидеть это в обсуждении тестирования в нижней части этого руководства.
Отчет APEX / Дизайн страницы и Параметризация SQL
Моя схема ссылок на столбцы выглядит аналогично предыдущему посту, например, от Ftaveras. Вот как работает моя ссылка. Что отличается тем, что я не перехожу на другую страницу, я просто возвращаюсь назад на ту же страницу, с которой я пришел. Перенаправления и филиалы, очевидно, не заботятся о том, что они просто возвращаются в одно и то же место.
Отличительной особенностью обратной поездки является то, что параметры страницы, которые изначально были нулевыми или незаполненными, СЕЙЧАС имеют значение. Это значение теперь оживляет отчеты на странице, которые были пустыми.
Шаг 1: ОТЧЕТ О СТРАНЕ
- Вывод: запрос всех элементов из
FOOD_SUPPLIES
Таблица. - Входы: поставка ссылок по
INGREDIENT_ID
фильтровать выходные данные RECIPE_REPORT.
Как это сделать: (подсказка) Для этого определите значение столбца / поля отчета на странице дизайна макета отчета как "связанный" столбец и присвойте его значение как элемент страницы. Ссылка на элемент страницы будет указана в запросе SQL следующего отчета...
Шаг 2: Отчет о получении
- Вывод: запрос всех записей из
ENTREE_RECIPE
стол, который имеетINGREDIENT_ID
от шага 1 в пределах их формулы. - Вход: поставка ссылок по
ENTREE_NAME
фильтровать выход RECIPE_FORMULA.
Как это сделать: (подсказка) Включите элемент страницы, определенный на шаге 1, в запрос SQL этого отчета:
SELECT * FROM entree_recipe
WHERE ingredient_id = :P3_INGREDIENT_ID
Шаг 3: ФОРМУЛА ОТЧЕТА
- Вывод: запрос всех записей из
ENTREE_RECIPE
стол, который имеетENTREE_NAME
выбран из шага 2.
Отладка и тестовый прогон
Большинство сможет пройти это далеко без каких-либо проблем. Если нет, вот несколько примеров того, как вы можете отлаживать и тестировать свою работу. Там могут быть некоторые встроенные инструменты и пакеты, которые уже существуют в Apex, поэтому любые предложения по альтернативным подходам приветствуются в комментариях...!
Использование вывода APEX Developer SESSION
После выбора входных данных для пробного запуска, нажмите на SESSION
ссылка на панели инструментов разработчика внизу страницы. Это пример вывода:
Обратите внимание, что отображаются элементы страницы, которые были установлены для этого сеанса. Входные данные, которые я использовал для этого теста, были:
INGREDIENT_ID
: 6432ENTREE_NAME
: персиковый коблер (свежий)
Дополнительный кредит: это альтернативный подход. Может быть полезно создать нечто подобное в качестве дополнения к любому разрабатываемому вами приложению. Вам не нужно удалять его из приложения, когда вы запускаете его в производство, потому что есть функция "условного отображения / подавления" для областей страницы. (проверить это)
Просто установите глобальный параметр как "режим" в вашем приложении Apex. Установите значение "DEBUG" или "TEST" или что-либо еще и введите все ваши экземпляры этой области страницы, чтобы они отображались только в том случае, если для него задан глобальный параметр.
Подведение итогов и обсуждение
Надеюсь, вам понравилось ваше посещение "Stack Food Works" (пожалуйста, не пробуйте и не пробуйте с линии).
Это был более целостный подход к дизайну приложений Apex. Это помогает иметь методологию, чтобы наметить каждый шаг, и способ проверить вашу работу как в начале, так и в конце вашего процесса разработки. Использование небольших примеров, таких как эта демонстрация, для применения этих методов дает возможность понять разработку Apex как ПРОЦЕСС создания программного обеспечения.
Да, это возможно.
- На странице B добавьте и скрыте имя элемента, например, P(#)_SERIAL, где (#) - номер вашей текущей страницы.
- Измените свой запрос и добавьте одну строку, как
AND SERIAL=:P(#)_SERIAL
, - На странице A перейдите на вкладку "Атрибуты отчета" в области отчета, нажмите "Изменить".
- В разделе ссылок на столбцы настройте ссылку на страницу B и установите для скрытого элемента на странице B значение в столбце отчета на странице A.
Имя: Элемент 1 [P(#)_SERIAL] Значение: #Num2#