· На шаге Source выберите From Scratch («с нуля»), нажмите Next>.
· На шаге Name and Type в поле Name введите JOBS, а в Type выберите Dinamic. Нажмите Next>.
· На шаге Query or Static Values замените текст запроса на следующий[1]:
SELECT job_title d, job_id v
FROM jobs
ORDER BY d
Обратите внимание на подсказку, содержащуюся в названии поля: «Query (SELECT DISPLAY_VALUE, RETURN_VALUE FROM...):». Это означает, что важен порядок, в котором возвращаются значения. В первом столбце должно возвращаться отображаемое значение (которое будет видеть пользователь), а во втором – собственно значение, которое будет вставлено в поле таблицы.
б. Щелкните по кнопке Create List of Values. Созданный список значений отобразится на странице Lists of Values.
2. Для подразделений (повторяется предыдущий алгоритм):
а. На странице Lists of Values щелкните по кнопке Create>.
б. На шаге Source выберите From Scratch. Нажмите Next>.
в. На шаге Name and Type в поле Name введите DEPARTMENTS, а в Type выберите Dinamic. Нажмите Next>.
г. На шаге Query or Static Values замените текст запроса на следующий:
SELECT department_name d, department_id v
FROM DEPARTMENTS
ORDER BY d
д. Щелкните по кнопке Create List of Values.
3. Для работников (этот список понадобится в следующей работе):
а. На странице Lists of Values щелкните по кнопке Create>.
б. На шаге Source выберите From Scratch. Нажмите Next>.
в. На шаге Name and Type в поле Name введите EMPLOYEES, а в Type выберите Dinamic. Нажмите Next>.
г. На шаге Query or Static Values замените текст запроса на следующий:
SELECT first_name ||' '|| last_name d, employee_id v
FROM employees
ORDER BY last_name
Обратите внимание на то, что значения в первом столбце представляют собой имя и фамилию работника, разделенные пробелом.
д. Щелкните по кнопке Create List of Values.
1.2. Связывание элементов со списками значений
После создания списков значений необходимо настроить визуальные элементы (items) таким образом, чтобы они отображались как выпадающие списки выбора (select lists) (по умолчанию визуальные элементы отображаются в виде текстовых полей).
1. Откройте окно редактирования для страницы Создать/Редактировать Работника.
2. В разделе Rendering найдите секцию Items, подчиненную пункту Создать/Редактировать Работника. В этой секции отображается список всех визуальных элементов страницы.
3. Чтобы отредактировать визуальный элемент, отображающий должность (P?_JOB_ID):
а. В секции Items щелкните по ссылке P?_JOB_ID. Справа отобразится страница редактирования элемента.
б. В секции Identification выберите Select List в поле Display As.
в. В секции Label измените значение в поле Label на Должность.
г. В секции List of Values в поле Named LOV выберите список JOBS.
д. Примените изменения.
4. Аналогично отредактируйте элемент, отображающий подразделение (P?_DEPARTMENT_ID). В качестве названия элемента должно отображаться Подразделение, для неопределенных значений должно отображаться - нет подразделения-. Для этого в поле Display Null Value выберите Yes (отображать неопределенные значения), а в поле Null display value введите - нет подразделения-. В качестве списка значений выберите DEPARTMENTS.
5. Запустите страницу. Обратите внимание, что поля Должность и Подразделение теперь отображаются как выпадающие списки:

6. Отредактируйте оставшиеся элементы формы так, чтобы для них отображались русскоязычные названия (замените значения в поле Label для каждого элемента на русскоязычное название):

2. Связывание разных таблиц в одном отчете
Недостатком созданного ранее отчета Подразделения является то, что в столбцах Менеджер и Расположение отражаются соответствующие идентификаторы, а не фамилии и имена сотрудников либо указание, например, страны в качестве места размещения подразделения. Изменим запрос для отчета Подразделения так, чтобы он включал данные из некоторых таблиц БД по следующей схеме:
· Для получения данных о менеджере выполняется переход по ссылкам manager_id (табл. DEPARTMENTS) – employee_id (табл. EMPLOYEERS), причем при указании имени менеджера ограничиться первой буквой.
· Для получения данных о стране размещения выполнить переход по ссылкам location_id (табл. DEPARTMENTS) – country_id (табл. LOCATIONS) - country_id (табл. COUNTRIES).
Для решения задачи:
1. Откройте определение страницы Подразделения в списке страниц на вкладке, соответствующей идентификатору Вашего приложения. Для выполнения последующих действий при необходимости следует поменять вид интерфейса, нажав на иконку Component view
наверху страницы.
2. В разделе Page Rendering найдите секцию Regions и щелкните по ссылке Подразделения. Откроется окно Identification. Найдите секцию Source и изучите запрос в поле Region Source.
3. Замените текст запроса в текстовом поле Region Source на следующий:
SELECT d. department_id "Department ID",
d. department_name "Department Name",
substr(e. last_name,1,1)||'. '|| e. first_name "Manager Name",
c. country_name "Location"
FROM departments d,
employees e,
locations l,
countries c,
employees e2
WHERE d. manager_id = e. employee_id
AND d. location_id = l. location_id
AND d. department_id = e2.department_id
AND l. country_id = c. country_id
AND instr(upper(d. department_name),upper(nvl(:P2_REPORT_SEARCH, d.department_name))) > 0
GROUP BY d. department_id, d. department_name,
substr(e. last_name,1,1)||'. '||e. first_name, c. country_name
4. Изучите текст нового запроса. Обратите внимание на предложение GROUP BY.
5. Щелкните по кнопке Apply Changes.
6. Запустите страницу. Отобразится видоизмененный отчет о подразделениях:

Обратите внимание на обновленные столбцы Менеджер (вместо идентификатора теперь отображается первая буква имени и фамилия) и Расположение.
3. Соединение отчетов
Созданные ранее отчеты существуют разрозненно, несмотря на то, что семантически они связаны по некоторым данным. Для создания некой единой схемы соединим отчеты.
Выполним два соединения отчетов: сначала соединим отчеты так, чтобы можно было, выбирая нужное подразделение, получать отчет о соответствующих работниках. Затем в один из столбцов отчета Подразделения добавим ссылку на отчет Работники, которая будет перенаправлять пользователя на соответствующую страницу и устанавливать фокус на выбранном подразделении.
3.1. Первое соединение отчетов
Для выполнения требуемого перехода создадим на отчете Работники область (Regions), в которой будет располагаться поле с выпадающим списком подразделений. Область – это участок на странице, который играет роль контейнера для содержимого страницы. Каждая страница может иметь любое количество областей. Внешний вид области задается с помощью шаблона (region template). Области обычно используются для группировки элементов управления на странице – например, визуальные элементов (items) или кнопок (buttons).
Для создания области:
1. Откройте окно редактирования для страницы Работники.
2. На странице определения страницы Работники в секции Regions щелкните по кнопке Create
.
3. Определите тип области – Static Content, и нажмите Next>.
4. На шаге Display Attributes:
а. Title – введите Подразделение.
б. Region Template – выберите No Template. Область будет добавлена без заголовка области.
в. Sequence – измените на 5. Это необходимо, чтобы создаваемая область отображалась над областью Работники (которая имеет sequence = 10).
г. Оставьте другие параметры без изменений и щелкните Next>.
5. На шаге Source никаких изменений нет, сразу нажимайте Next>.
6. На шаге Settings в опции Output As оставьте значение по умолчанию – HTML и щелкните Next>.
7. На шаге Conditional Display нажмите Create Region. Обратите внимание, что в секции Regions теперь отображается область Подразделение, имеющая тип – Static Content.
Теперь необходимо создать в полученной области Подразделение визуальный элемент (item), который представляет собой выпадающий список выбора, использующий список значений подразделений:
1. На странице определения страницы Работники в секции Items щелкните по кнопке Create
.
2. На шаге Item Type в одноименном окне выберите тип элемента – Select List – и щелкните Next>.
3. На шаге Display Position and Name:
а. Item Name – замените на P?_DEPARTMENT_ID.
б. Sequence – поставьте значение 10.
в. Region – выберите Подразделение. Щелкните Next>.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |


