4. На шаге Item Attributes замените значение Label на Подразделение и щелкните Next>.
5. На шаге Settings в поле Page Action on Selection установите Submit Page. Нажмите Next>.
6. На шаге List of Values:
а. Named LOV – выберите DEPARTMENTS.
б. Display Null Value – оставьте значение Yes.
в. Null Display Value– введите - нет подразделения-.
г. Null Return Value– введите -1. Ввод значений, которые подставляются вместо неопределенного значения (Null Value), позволяет облегчить написание запросов (облегчает проверку на Null). В этом случае, когда пользователь выбирает в списке - нет подразделения-, в элементе устанавливается значение -1, и Вы можете использовать это значение в запросе.
7. На шаге Source:
а. В поле Default Value введите -1.
б. Оставьте другие параметры без изменений и щелкните Create Item.
8. В секции Items нажмите на P?_DEPARTMENT_ID и в поле Cascading LOV Parent Item(s) выберите значение P?_DEPARTMENT_ID. Щелкните Apply Changes.
Итак, создан элемент, который будет принимать значения идентификатора подразделения, но пока еще он не соединен с отчетом. Чтобы сделать это, необходимо отредактировать SQL-запрос в Region Source, добавив в него предложение WHERE:
1. Откройте окно редактирования (Region Definition) для области Работники.
2. В поле Region Source добавьте в запрос после предложения FROM следующий текст:
WHERE (DEPARTMENT_ID = :P2_DEPARTMENT_ID or
(DEPARTMENT_ID is null and nvl(:P2_DEPARTMENT_ID,'-1') = '-1'))
Данное предложение WHERE позволит отображать только работников, принадлежащих выбранному подразделению. Обратите внимание, что подстановочная строка :P2_DEPARTMENT_ID должна соответствовать созданному ранее элементу.
3. Примените изменения.
4. Запустите страницу. Выберите любое подразделение, например, «Вестер». Должны отобразиться только работники, относящиеся к этому подразделению:

Если такого не происходит, то следует настроить механизм смены страниц, что описывается ниже.
Когда на странице выполняется команда Submit, то переходы (branches), указанные для страницы, определяют, какая страница должна отобразиться следующей. В данном случае необходимо, чтобы после команды Submit на странице Работники снова отобразилась та же самая страница с отчетом о работниках, поэтому необходимо создать переход на страницу Работники:
1. В окне редактирования (Page) страницы Работники в колонке Page Processing выберите опцию Brunches и щелкните по иконке Create
. Отобразится мастер создания перехода.
2. На шаге Branch Attributes в строке Name введите Работники, остальное оставьте как есть. Нажмите Next>.
3. На шаге Target:
а. В качестве целевой страницы в окне Page выберите страницу Работники.
б. Отметьте флажок reset pagination for this page. Когда установлена эта опция, приложение отображает первую порцию данных, удовлетворяющих запросу. Когда же эта опция не выбрана, то если пользователь просматривал, например, третью порцию данных и выбрал другое подразделение, то ему будет отображена третья порция нового запроса.
в. Оставьте все остальные параметры без изменений и создайте переход (нажмите Create Branch на шаге Branch Conditions).
3.2. Второе соединение отчетов
Теперь необходимо добавить на странице отчета Подразделения ссылку на страницу отчета Работники. Рациональнее всего это сделать, добавив ссылку в один из столбцов таблицы Подразделения, например, в столбец Подразделение. При этом:
1) на странице Работники должно устанавливаться выбранное подразделение,
2) в столбце Подразделение по-прежнему должно отображаться название подразделения,
3) при переходе по ссылке на странице Работники должна отображаться первая порция из списка работников соответствующего подразделения,
4) при наведении указателя мыши на ссылку должна высвечиваться подсказка «показать работников» (для этого при редактировании параметров ссылки введите в поле Link Attributes строку: title=”показать работников”).
Для решения задач:
1. Откройте страницу Подразделения для редактирования.
2. На вкладке Report Attributes войдите в режим редактирования атрибута Department Name:
· В окне Link Text выберите Department Name,
· В окне Link Attribute sвведите title="показать работников",
· В окне Page выберите страницу Работники,
· В окне Item 1 в секции Page выберите Подразделения и из списка выберите P?_DEPARTMENT_ID, в окне Value 1 - #DepartmentID#. Примените изменения.
3. Примените изменения.
4. Запустите страницу Подразделения и проверьте правильность работы ссылки:

И после перехода по ссылке:

5. Добавьте возможность сортировки в отчете Подразделения по всем столбцам и в отчете Работники по всем столбцам, кроме столбца Изменить. Это можно сделать, поставив флажки Sort в разделе Column Attributes в окне редактирования столбцов соответствующего отчета (Report Attributes).
6. Запустите приложение и добавьте несколько работников в одно из подразделений. При этом проверьте работу сортировки по столбцам.
7. Измените в отчете Подразделения запись об одном из подразделений, удалив в нем сведения о менеджере (это надо сделать через соответствующую таблицу), и запустите это приложение.
Следует отметить, что в созданном отчете Подразделения не отражается информация о тех подразделениях, в которых нет менеджера или работников. Причина в SQL-запросе: чтобы в отчете отображались все подразделения, необходимо его модифицировать:
1. Замените текст запроса в Region Source для области Подразделения на странице Подразделения на следующий:
SELECT d. department_id "Department ID",
d. department_name "Department Name",
nvl2(e. employee_id, substr(e. last_name,1,1)||'. '|| e. first_name, '') "Manager Name",
c. country_name "Location"
FROM departments d left join employees e on d. manager_id = e. employee_id
left join locations l on d. location_id = l. location_id
left join countries c on l. country_id = c. country_id
left join employees e2 on d. department_id = e2.department_id
WHERE
instr(upper(d. department_name),upper(nvl(:P2_REPORT_SEARCH, d. department_name))) > 0
GROUP BY d. department_id, d. department_name,
nvl2(e. employee_id, substr(e. last_name,1,1)||'. '|| e. first_name, ''),
c. country_name
Обратите внимание на следующие моменты:
· Функция nvl2 принимает 3 параметра: первый параметр проверяется на значение null, если первый параметр is not null, то функция возвращает значение второго параметра (первую букву имени и фамилию), иначе – значение третьего параметра (пустую строку).
· В предложении FROM используется левое внешнее соединение (left [outer] join), которое означает, что будут выбираться все записи из левой части выражения, даже если для них нет соответствующих записей в правой части. Столбцы, по которым производится соединение, указываются после ключевого слова on.
2. Примените изменения.
Задание к работе:
1. В своем приложении на форме, предназначенной для редактирования данных в одном из отчетов, создайте выпадающие списки выбора.
2. Свяжите ряд таблиц для замены идентификаторов сущностей более информативными данными.
3. Свяжите отчеты для организации переходов между ними.
4. Русифицируйте заголовки полей в отчетах и формах.
5. Покажите результат преподавателю.
Лабораторная работа № 5. Редактирование отчетов
Цель работы – изучение технологии редактирования готового отчета.
Задачи:
1) Добавить на страницу Работники отчет (область), отображающий детали выбранного подразделения. При этом задать условие, по которому детали подразделения отображаются только, если выбрано какое-либо подразделение, если же выбрано - нет подразделения-, то область не должна отображаться.
2) Создать страницу с формой для создания/редактирования подразделения и соединить ее со страницей Подразделения, добавив в отчет Подразделения ссылку для перехода в режим редактирования (в столбце отчета), а также кнопку Создать для создания нового подразделения.
1. Редактирование отчета Работники
Некоторой недоработкой отчета Работники является недостаток информации по соответствующему подразделению, название которого в виде небольшого отчета выводится на этой странице. Зададим также вывод дополнительной информации, имеющейся в БД.
1. Откройте окно редактирования для страницы Работники. В разделе Page Rendering страницы в подразделе Regions щелкните по иконке Create
.
2. В Identify the type of region выберите Report.
3. С помощью мастера создайте область, задав для нее следующие параметры (для остальных параметров оставьте значения по умолчанию):
а. Реализация отчета – Classic Report
б. Название области (Title) – О подразделении
в. Шаблон области (Region Template) – No Template
г. Очередность (Sequence) – 7 (это значит, что создаваемая область будет располагаться между областями со значениями sequence 5 и 10). Нажмите Next>.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |


