Попытка создать столбец ссылок 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 (диаграмма отношений сущностей) ниже, с образцами данных, использованными для этой демонстрации:

Рецепт стека работает ERD

Отношения данных следующие:

  1. Персонал в Stack Food-Works ведет инвентаризацию всех ингредиентов для типов блюд и готовых продуктов, которые они производят. Каждый ингредиент имеет уникальный идентификатор (INGREDIENT_ID) и персонал отслеживает количество каждого предмета в своей кладовой.
  2. Каждый ингредиент может использоваться в нескольких рецептах, но они будут использоваться ровно один раз для данного рецепта.
  3. ENTREE_RECIPE Таблица имеет составной ключ, что означает комбинацию двух частей этого составного ключа (ENTREE_NAME а также INGREDIENT_SEQ) это должно быть уникальным.
  4. Существует взаимосвязь FOREIGN KEY между INGREDIENT_ID значения обеих таблиц.

Требования к отображению отчета (APEX и элементы дизайна SQL)

Выбор элемента из первого отчета используется в качестве входных данных и критериев ограничения / фильтрации для второго отчета.

Случай пользователя № 1:

  1. Пользователь выбирает идентификатор ингредиента из списка доступных ингредиентов в кладовой.
  2. Входные данные из (1) фильтруют выходные данные ОТЧЕТА О ПОЛУЧЕНИИ. Это список всех рецептов, которые имеют выбранный ингредиент в своей формуле.

Случай пользователя № 2:

  1. Пользователь выбирает ENTREE_NAME из отчета рецепта. ENTREE_NAME используется для доставки третьего отчета: ФОРМУЛА РЕЦЕПТА, который является полным рецептом для позиции, выбранной из предыдущего отчета.

Инструменты тестирования

(Обычно они нужны для более сложных страниц, так что это хорошее начало для использования или разработки для более простых...)

Я сделал свой собственный, но вы также можете ссылаться на SESSION ссылка на панели инструментов разработчика в нижней части страницы APEX вашего запущенного приложения (когда оно отображается).

Ссылка для отслеживания сессии APEX (панель инструментов разработчика

Вот моя идея; это область заголовка, которая также имеет кнопку RESET введите значения, чтобы я мог очистить кэш и повторно протестировать или попробовать другие примеры. Позже я покажу, как вы можете использовать эту ссылку, чтобы увидеть, что происходит. Вы можете увидеть это в обсуждении тестирования в нижней части этого руководства.

Отчет APEX / Дизайн страницы и Параметризация SQL

Моя схема ссылок на столбцы выглядит аналогично предыдущему посту, например, от Ftaveras. Вот как работает моя ссылка. Что отличается тем, что я не перехожу на другую страницу, я просто возвращаюсь назад на ту же страницу, с которой я пришел. Перенаправления и филиалы, очевидно, не заботятся о том, что они просто возвращаются в одно и то же место.

Отличительной особенностью обратной поездки является то, что параметры страницы, которые изначально были нулевыми или незаполненными, СЕЙЧАС имеют значение. Это значение теперь оживляет отчеты на странице, которые были пустыми.

Шаг 1: ОТЧЕТ О СТРАНЕ

  1. Вывод: запрос всех элементов из FOOD_SUPPLIES Таблица.
  2. Входы: поставка ссылок по INGREDIENT_ID фильтровать выходные данные RECIPE_REPORT.

Стек Food Works: кладовая отчет

Как это сделать: (подсказка) Для этого определите значение столбца / поля отчета на странице дизайна макета отчета как "связанный" столбец и присвойте его значение как элемент страницы. Ссылка на элемент страницы будет указана в запросе SQL следующего отчета...

Запрос дизайна страницы APEX по ссылкам на отчеты

Шаг 2: Отчет о получении

  1. Вывод: запрос всех записей из ENTREE_RECIPE стол, который имеет INGREDIENT_ID от шага 1 в пределах их формулы.
  2. Вход: поставка ссылок по ENTREE_NAME фильтровать выход RECIPE_FORMULA.

Стек Пищевые Работы: Отчет Рецепта

Как это сделать: (подсказка) Включите элемент страницы, определенный на шаге 1, в запрос SQL этого отчета:

    SELECT * FROM entree_recipe 
     WHERE ingredient_id = :P3_INGREDIENT_ID 

Шаг 3: ФОРМУЛА ОТЧЕТА

  1. Вывод: запрос всех записей из ENTREE_RECIPE стол, который имеет ENTREE_NAME выбран из шага 2.

Стек Food Works: Формула Отчет

Отладка и тестовый прогон

Большинство сможет пройти это далеко без каких-либо проблем. Если нет, вот несколько примеров того, как вы можете отлаживать и тестировать свою работу. Там могут быть некоторые встроенные инструменты и пакеты, которые уже существуют в Apex, поэтому любые предложения по альтернативным подходам приветствуются в комментариях...!

Использование вывода APEX Developer SESSION

После выбора входных данных для пробного запуска, нажмите на SESSION ссылка на панели инструментов разработчика внизу страницы. Это пример вывода:

APEX Developer SESSION Отчет

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

  1. INGREDIENT_ID: 6432
  2. ENTREE_NAME: персиковый коблер (свежий)

Дополнительный кредит: это альтернативный подход. Может быть полезно создать нечто подобное в качестве дополнения к любому разрабатываемому вами приложению. Вам не нужно удалять его из приложения, когда вы запускаете его в производство, потому что есть функция "условного отображения / подавления" для областей страницы. (проверить это)

Пример настраиваемой области отладки страницы

Просто установите глобальный параметр как "режим" в вашем приложении Apex. Установите значение "DEBUG" или "TEST" или что-либо еще и введите все ваши экземпляры этой области страницы, чтобы они отображались только в том случае, если для него задан глобальный параметр.

Подведение итогов и обсуждение

Надеюсь, вам понравилось ваше посещение "Stack Food Works" (пожалуйста, не пробуйте и не пробуйте с линии).

Это был более целостный подход к дизайну приложений Apex. Это помогает иметь методологию, чтобы наметить каждый шаг, и способ проверить вашу работу как в начале, так и в конце вашего процесса разработки. Использование небольших примеров, таких как эта демонстрация, для применения этих методов дает возможность понять разработку Apex как ПРОЦЕСС создания программного обеспечения.

Да, это возможно.

  1. На странице B добавьте и скрыте имя элемента, например, P(#)_SERIAL, где (#) - номер вашей текущей страницы.
  2. Измените свой запрос и добавьте одну строку, как AND SERIAL=:P(#)_SERIAL,
  3. На странице A перейдите на вкладку "Атрибуты отчета" в области отчета, нажмите "Изменить". введите описание изображения здесь
  4. В разделе ссылок на столбцы настройте ссылку на страницу B и установите для скрытого элемента на странице B значение в столбце отчета на странице A. введите описание изображения здесь

Имя: Элемент 1 [P(#)_SERIAL] Значение: #Num2#

демонстрация

Другие вопросы по тегам