КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Создание параметризованного отчетаВ приложениях Oracle Application Express отчет – это отформатированный результат выполнения SQL-запроса. Параметризованный отчет – это отчет, в котором результат запроса зависит от данных, введенных на форме пользователем. 1. Создайте новую страницу для параметризованного отчета: а. Тип страницы – Blank Page б. Название и ярлык страницы – Параметризованный отчет "Работники". в. Для создаваемой страницы должна быть создана новая вкладка в существующем наборе вкладок г. Название (ярлык) вкладки – Параметризованный отчет ‘Работники’ На созданной странице необходимо создать 2 области: область для размещения элементов, представляющих критерии отбора (параметры отчета) и область для отображения результатов запроса. 2. Создайте на странице Параметризованный отчет "Работники" область для размещения элементов, представляющих критерии отбора: а. Тип области – HTML б. Тип контейнера HTML области – HTML в. Заголовок области (Title) – Критерии отбора г. В остальных полях оставьте значения по умолчанию. 3. Создайте на странице Параметризованный отчет "Работники" область для отображения результатов запроса: а. Тип области – Report б. Реализация отчета (Report Implementation) – Classic Report в. Заголовок области (Title) – Работники&P3_TEXT.[7]. &P3_TEXT. – это подстановочная строка, которая будет определять содержание заголовка. Вы создадите соответствующий элемент чуть позже. г. На шаге Источник (Source) введите следующий SQL запрос: SELECT EMPLOYEES.EMPLOYEE_ID EMPLOYEE_ID, EMPLOYEES.FIRST_NAME FIRST_NAME, EMPLOYEES.LAST_NAME LAST_NAME, EMPLOYEES.PHONE_NUMBER PHONE_NUMBER, EMPLOYEES.HIRE_DATE HIRE_DATE, EMPLOYEES.JOB_ID JOB_ID, EMPLOYEES.SALARY SALARY, EMPLOYEES.COMMISSION_PCT COMMISSION_PCT, EMPLOYEES.DEPARTMENT_ID DEPARTMENT_ID FROM #OWNER#.EMPLOYEES EMPLOYEES WHERE (lower(first_name) like '%' || lower(:P3_NAME) || '%' OR lower(last_name) like '%' || lower(:P3_NAME) || '%') AND nvl(department_id, -1) = decode(:P3_DEPT, -1, nvl(department_id, -1), :P3_DEPT) Обратите внимание: · В предложении WHERE с помощью функции lower() производится приведение значений столбцов и соответствующих критериев отбора к нижнему регистру. Это делает поиск не чувствительным к регистру. · Групповой символ % соответствует любому символу или группе символов · Функция decode() имеет следующий синтаксис: DECODE(expr, search, result [, search, result ]... [, default ]) Функция последовательно сравнивает значение expr с каждым значением search. Если значение expr равно значению search, возвращается соответствующее значение result. Если совпадений не обнаружено, возвращается значение default. Если значение default не указано, возвращается null. д. Остальные параметры оставьте со значениями по умолчанию.
Теперь необходимо создать элементы, на которые есть ссылки в заголовке области и в запросе: P3_NAME, P3_DEPT, P3_MGR и P3_TEXT: 1. Создайте в области Критерии отбора текстовое поле для ввода строки поиска работника по имени и фамилии: а. Тип элемента – Page Control on this Page - Item б. Тип отображения текстового элемента – Text Field в. Название элемента – P3_NAME г. Область – Критерии отбора д. Ярлык для поля – Искать работника е. Остальные параметры оставьте со значениями по умолчанию 2. Аналогичным образом в области Работники&P3_TEXT. создайте скрытое поле (Hidden) с именем P3_TEXT. 3. Создайте в области Критерии отбора поле с выпадающим списком выбора (Item - Select List): а. Имя элемента – P3_DEPT б. Значения должны браться из скопированного Вами ранее списка значений для подразделений (DEPARTMENTS) в. Для неопределенных (Null) значений должен выводиться текст -Все- и возвращаться значение -1 г. Ярлык для поля – Подразделение д. Остальные параметры оставьте со значениями по умолчанию
После того, как пользователь введет критерии отбора в созданные Вами поля, страница должна быть отправлена на сервер для того, чтобы запрос отчета выполнился с новыми параметрами: 1. Создайте на странице Параметризованный отчет "Работники" в области Критерии отбора кнопку для отправки (submit) страницы на сервер: а. При определении позиции кнопки укажите Create a button displayed among this region's items. б. Имя кнопки – P3_GO в. Ярлык (Label) – Выполнить г. Стиль кнопки (Button Style) – Template Based Button д. Шаблон (Template) – Button 2. Запустите страницу и протестируйте ее работу следующим образом: а. Очистите поля с критериями отбора и нажмите кнопку Выполнить. Отобразятся записи обо всех работниках. б. Используя навигационную ссылку в правом нижнем углу отчета, пролистайте 1-2 порции (страниц) записей. в. Введите в поле Искать работника строку ров и нажмите кнопку Выполнить. По идее, должны были отобразиться записи о работниках, в чьих именах и фамилиях встречается заданная строка. Однако вместо этого может выводиться сообщение следующего вида: Если отображается подобное сообщение об ошибке, то причина этого заключается в том, что при отправке запроса не была сброшена разбивка на страницы, в то время как результат запроса помещается на одной странице. Поэтому Вы фактически запросили 2-ю или 3-ю страницу отчета, состоящего только из одной страницы. Щелчок по ссылке reset pagination позволит корректно отобразить результат выполнения запроса. Для исправления такого некорректного поведения необходимо сбрасывать разбивку на страницы при отправке страницы на сервер. 3. Отредактируйте переход (branch) Page на странице Параметризованный отчет "Работники", установив флажок reset pagination for this page: Page Processing - + - Branch – Page=”Параметризованный отчет “Работники””. 4. Протестируйте работу страницы, комбинируя различные критерии выбора записей.
Далее необходимо создать процесс, который устанавливает значение скрытого элемента P3_TEXT. Значение P3_TEXT используется в заголовке области, в которой отображаются сведения о работниках. В результате выполнения процесса заголовок должен принимать вид Работники <название подразделения>: 1. Создайте на странице Параметризованный отчет "Работники" процесс, устанавливающий значение скрытого элемента P3_TEXT: а. В определении страницы в столбце Page Processing щелкните по иконке Create и выберите Process. б. На шаге Process Type выберите тип процесса – PL/SQL. в. На шаге Process Attributes установите название процесса (Name) – Получить данные для заголовка. Остальные параметры оставьте без изменения. г. На шаге Process в поле Enter PL/SQL Page Process введите следующий текст, представляющий собой анонимный PL/SQL блок: DECLARE l_dept varchar2(100); BEGIN :P3_TEXT := null; IF :P3_DEPT != -1 THEN SELECT department_name INTO l_dept FROM departments WHERE department_id = :P3_DEPT; :P3_TEXT := :P3_TEXT || ' подразделения ' || l_dept; END IF; END; д. В остальных полях оставьте значения по умолчанию. 2. Протестируйте работу формы:
4. Создание формы «Главная/Детальная» (Master/Detail) Форма «Главная/Детальная» отражает отношение «один-ко-многим» между двумя таблицами в БД. Обычно такая форма отображает запись из главной таблицы и множество соответствующих ей записей из детальной (подчиненной) таблицы на одной HTML странице. С помощью этой формы пользователи могут вставлять, изменять и удалять записи в обеих таблицах. 1. Создайте страницу с формой «Главная/Детальная» для редактирования подразделения и его работников: а. Тип страницы – Form (Master Detail Form) б. На шаге Master Table and Columns: · Имя таблицы (Table / View Name) – DEPARTMENTS · Добавьте все столбцы таблицы в список отображаемых в. На шаге Detail Table and Columns: · Имя таблицы (Table / View Name) – EMPLOYEES · Добавьте все столбцы таблицы в список отображаемых г. На шаге Define Primary Keyв качестве источников значений столбцов первичных ключей для главной и детальной таблиц выберите соответственно существующие последовательности (Existing sequence) DEPARTMENTS_SEQ и EMPLOYEES_SEQ д. На шаге Master Options: · Оставьте выбранной опцию включить в форму элементы навигации по записям главной таблицы (Include master row navigation? – Yes) · Установите порядок перехода по записям (Master Row Navigation Order) в соответствие co значением столбца DEPARTMENT_NAME · Оставьте выбранной опцию создания отчета по главной таблице (Include master report? – Yes). Она означает, что в дополнение к форме будет создана страница с отчетом о подразделениях, содержащая ссылки на форму е. На шаге Layout выберите вариант создания формы с возможностью редактирования детальной таблицы на той же странице (Edit detail as tabular form on same page) ж. На шаге Page Attributes: · Заголовок страницы с отчетом (Master) – Подразделения · Заголовок страницы с формой (Detail) – Главная/Детальная форма 'Подразделения/Работники' · Выберите опцию не добавлять на страницу область цепочки ссылок (- do not add breadcrumb region to page -) з. На шаге Tab Options выберите опцию Use an existing tab set and create a new tab within the existing tab set (Использовать существующий набор вкладок и создать новую вкладку в существующем наборе вкладок) и для уже существующего набора вкладок в поле New Tab Label впишите Главная/Детальная форма ‘Подразделение/Работники’
2. Запустите приложение. Обратите внимание, что на вкладке Главная/Детальная форма ‘Подразделение/Работники’ отображается страница отчета о подразделениях:
Щелчок по иконке редактирования около нужного подразделения приводит к переходу на страницу Главная/Детальная форма 'Подразделения/Работники'. При этом в «главной» форме отображается выбранное на странице отчета подразделение:
3. На странице Главная/Детальная форма 'Подразделения/Работники' доработайте поля Manager Id и Location Id в области Departments и столбец Job Id в области Employees так, чтобы значения в них можно было выбирать с помощью выпадающих списков выбора (Select List):
4. Запустите приложение и протестируйте работу формы и переходы с использованием вкладок. Задание к работе(все промежуточные результаты через кнопку PrintScreen сохранять в отдельном файле для показа преподавателю): 1. Проделайте все описанные действия. 2. Покажите результат преподавателю.
|