- •Федеральное государственное бюджетное образовательное учреждение
- •Введение
- •Лабораторная работа №1. СтруктураApeXи начало работы
- •Лабораторная работа №2. Создание базы данных
- •Лабораторная работа №3. Создание исходного приложения
- •2. Связывание разных таблиц в одном отчете
- •4. Выполнение расчетов в отчете
- •4.1. Вычисление зарплаты работника
- •4.2. Добавление столбца с годовой зарплатой
- •4.3. Восстановление иконки редактирования
- •4.4. Русификация заголовков и форматирование полей
- •Лабораторная работа № 4. Создание связей между приложениями
- •Лабораторная работа № 5. Редактирование приложений
- •4. Соединение страниц Подразделения и Создать/Редактировать Подразделение
- •Лабораторная работа № 6. Доработка пользовательского интерфейса
- •Лабораторная работа № 7. Создание табличных форм, параметризованных отчетов и форм «Главная/Детальная»
- •Лабораторная работа № 8. Создание и использование кнопок-флажков (check box)
- •Лабораторная работа № 9. Самостоятельное создание приложения для выбранной предметной области
- •Приложение
2. Связывание разных таблиц в одном отчете
Изменим запрос для отчета Подразделения так, чтобы он включал данные из таблицы EMPLOYEES:
Откройте определение страницы Подразделения в списке страниц на вкладке, соответствующей идентификатору Вашего приложения.
В разделе Page Rendering обратите внимание на секцию Items. В ней перечислены элементы управления, содержащиеся на странице.
В этом же разделе найдите секцию Regions и щелкните по ссылке Подразделения. Откроется окно Identification. Найдите секцию Source и изучите запрос в поле Region Source.
Замените текст запроса в текстовом поле Region Source на следующий:
SELECT d.department_id "Department ID",
d.department_name "Department Name",
count('x') "Number of Employees",
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
Изучите текст нового запроса. Обратите внимание на использование групповой функции count() и предложение GROUP BY.
Щелкните по кнопке Apply Changes.
Запустите страницу. Отобразится видоизмененный отчет о подразделениях:
Обратите внимание на 3 новых столбца: Number Of Employees, Manager Name (вместо идентификатора теперь отображается первая буква имени и фамилия) и Location.
Создание отчета и формы для таблицы EMPLOYEES
Для создания отчета о работниках и формы для редактирования:
Перейдите на домашнюю страницу приложения в Application Builder.
Щелкните по кнопке Create Page >.
На шаге Create Page:
Выберите Form и щелкните Next >.
Выберите Form on a Table with Report и щелкните Next >. Эта опция создает две страницы: отчет и форму, основанные на одной таблице или представлении.
На шаге Report Page:
Implementation – выберите Classic.
Breadcrumb – выберите Breadcrumb. Появится секция Create Breadcrumb Entry.
В Select Parent Entry выберите ссылку на страницу Главная.
В полях Entry Name, Page Name и Region Title измените значение на Работники, щелкните Next >.
На шаге Data Source:
В поле Table/View Owner оставьте значение по умолчанию.
В поле Table/View Name выберите EMPLOYEES и щелкните Next >.
На шаге Tabs в Tab Options оставьте опцию Do not use tabs и щелкните Next >.
На шаге Report Columns:
В списке Select Column(s), нажав и удерживая клавишу Ctrl выберите следующие столбцы:
EMPLOYEE_ID
FIRST_NAME
LAST_NAME
HIRE_DATE
SALARY
COMMISSION_PCT
Выбранные столбцы появятся на странице отчета. Щелкните Next >.
В Edit Link Image оставьте иконку, выбранную по умолчанию, и щелкните Next >.
На шаге Form Page:
В полях Page Name, Region Title введите Создать/Редактировать Работника. Щелкните Next >.
В поле Primary Key Type выберите Select Primary Key Column(s), а затем в поле Primary Key Column 1 выберите EMPLOYEE_ID и щелкните Next >.
В Define the source for the primary key columns выберите Existing Sequence, а в появившемся внизу поле Sequence выберите EMPLOYEES_SEQ (EMPLOYEES_SEQ – это объект БД «сиквенс» (последовательность), предназначенный для генерации уникальных числовых значений, которые используются в качестве значений суррогатных идентификаторов). Щелкните Next >.
В списке Select Column(s) выберите все столбцы и щелкните Next >. Эти столбцы появятся в форме Создать/Редактировать Работника.
В блоке Identify Process Options оставьте все как есть (значения Yes для операций Insert, Update и Delete) и щелкните Next >. Это позволит пользователям добавлять, изменять и удалять записи о работниках.
На шаге Confirm проверьте выбранные атрибуты страниц формы и отчета и щелкните по кнопке Create.
Запустите созданную страницу. Отобразится отчет Работники:
Обратите внимание на следующие моменты:
Выбранная иконка редактирования появляется в каждой записи. Иконка представляет собой ссылку, щелчок по которой приводит к переходу на страницу формы Создать/Редактировать Работника, в которой можно изменить запись о работнике.
В правом верхнем углу мастером была создана кнопка Create (не видна на рисунке), щелчок по которой также приводит к переходу на страницу формы Создать/Редактировать Работника, на которой можно создать запись о новом работнике в таблице EMPLOYEES.
Отчет Работники включает в себя выбранные столбцы. Oracle APEX на основе этого выбора создал соответствующий SQL-запрос, который возвращает эти данные.
Для того чтобы просмотреть форму для редактирования, которая была создана вместе с отчетом, щелкните по иконке редактирования в какой-либо записи отчета Работники. Появится форма Создать/Редактировать Работника:
Обратите внимание на следующие моменты:
Форма содержит кнопки Cancel, Delete и Apply Changes (на рисунке не показаны).
Обязательные столбцы (на которые в БД наложено ограничение целостности Not Null) выделены цветом (это видно, когда структура таблиц БД создается в APEX).
Рядом с полем Hire Date отображается иконка календаря , т.к. тип данных соответствующего столбца –DATE. Щелчок по этой иконке приводит к появлению окна с календарем.