https://apex. /pls/apex/f? p=54506:1:1431153116390:::::,

где:

·  apex. – URL сервера

·  pls – индикатор того, что нужно использовать mod_plsql картридж

·  apex – имя database access descriptor (DAD).

·  f? p= – это префикс, используемый Oracle APEX

·  54506– это идентификатор вызываемого приложения

·  1431153116390 – номер сессии

Чтобы запустить приложение, пользователь должен перейти в браузере по следующему URL (для заданного примера): https://apex. /pls/apex/f? p=54506

Запустите свое приложение, используя полученный URL и созданную ранее учетную запись конечного пользователя:

Задание к работе:

1.  Доработайте пользовательский интерфейс аналогично рассмотренному примеру, выбирая, возможно, свои варианты оформления.

2.  Создайте еще одну рабочую область и экспортируйте в нее свое приложение.

3.  В новой рабочей области создайте учетные записи для нескольких конечных пользователей.

4.  Покажите результат преподавателю.

Лабораторная работа № 7. Выполнение расчетов в отчетах

Цель работы – изучение технологии программирования расчетов в отчетах.

Задачи:

1)  Выполнить расчет годовой зарплаты работников в отчете Работники и разместить результаты в новом столбце.

2)  Выполнить расчет числа работников по каждому подразделению в отчете Подразделения и разместить результаты в новом столбце.

1.  Расчет годовой зарплаты работников

Для решения задачи:

1)  создадим PL/SQL функцию, которая вычисляет зарплату работника;

НЕ нашли? Не то? Что вы ищете?

2)  добавим столбец «Зарплата/Год» для отображения результатов этих вычислений в отчете о работниках,

1.1. Вычисление зарплаты работника

1.  Перейдите на домашнюю страницу приложения и щелкните по опции SQL Workshop, а затем SQL Commands. Появится окно, в котором Вы можете запускать SQL и PL/SQL код в БД.

2.  Введите следующий скрипт:

CREATE OR REPLACE FUNCTION calc_remuneration(

salary IN number, commission_pct IN number) RETURN NUMBER IS

BEGIN

RETURN ((salary*12) + (salary * 12 * nvl(commission_pct,0)));

END;

/

Этот PL/SQL код создает функцию calc_remuneration, принимающую входные (IN) числовые (number) параметры salary (размер месячного оклада) и commission_pct (комиссионный процент) и возвращающую число. Функция вычисляет размер годового вознаграждения работника с учетом процентов.

Обратите внимание на функцию nvl, которая проверяет значение первого параметра на null и в случае, если первый параметр равен null, возвращает значение второго параметра. Это важно, т. к. результатом любых арифметических операций со значением null является null. А в данном случае, используя nvl, мы интерпретируем неопределенное значение комиссионного процента (отсутствие комиссионного процента у работника) как значение = 0.

3.  Щелкните по кнопке Run (справа вверху). В окне Results отобразится сообщение «Function created.»

1.2. Добавление столбца с годовой зарплатой

1.  Откройте страницу Page Rendering для страницы Работники:

а.  В секции Regions щелкните по ссылке Работники.

б.  В секции Source проанализируйте имеющийся там автоматически сгенерированный код:

select "EMPLOYEE_ID",

"FIRST_NAME",

"LAST_NAME",

"HIRE_DATE",

"SALARY",

"COMMISSION_PCT"

from "#OWNER#"."EMPLOYEES"

WHERE (DEPARTMENT_ID = :P3_DEPARTMENT_ID or

(DEPARTMENT_ID is null and nvl(:P3_DEPARTMENT_ID,'-1') = '-1'))

Обратите внимание на следующие моменты:

·  В запрос включены столбцы, выбранные при создании отчета с помощью мастера.

·  #OWNER# – подстановочная строка (substitution string), представляющая имя схемы, с которой ассоциировано приложение и в которой содержатся необходимые таблицы.

2.  Замените код запроса на следующий:

SELECT "EMPLOYEE_ID" "Emp_Id",

"FIRST_NAME",

"LAST_NAME",

"HIRE_DATE",

"SALARY",

"COMMISSION_PCT",

calc_remuneration(salary, commission_pct) "Зарплата/Год"

from "#OWNER#"."EMPLOYEES"

WHERE (DEPARTMENT_ID = :P3_DEPARTMENT_ID or

(DEPARTMENT_ID is null and nvl(:P3_DEPARTMENT_ID,'-1') = '-1'))

Обратите внимание на следующие моменты:

·  В запрос добавился вызов созданной ранее функции calc_remuneration, которой передаются значения столбцов SALARY и COMMISSION_PCT.

·  Для столбца EMPLOYEE_ID и столбца с функцией calc_remuneration установлены синонимы, соответственно, «Emp_Id» и «Зарплата/год».

3.  Примените изменения и запустите страницу Работники:

Безымянный.bmp

Обратите внимание на следующие моменты:

·  Появился новый столбец Зарплата/Год.

·  Пропала иконка со ссылкой на страницу Создать/Редактировать Работника. Это произошло потому, что изменилось название столбца, с которым была ассоциирована ссылка на страницу редактирования записи о работнике (мы установили синоним Emp_Id для столбца EMPLOYEE_ID).

·  Столбцы отчета имеют англоязычные названия (кроме Зарплата/Год, которому мы установили русскоязычный синоним в запросе).

Для восстановления в столбце Emp_Id иконки редактирования и ссылки на страницу Создать/Редактировать Работника выполним следующее:

1.  На странице определения страницы Работники в секции Regions щелкните по ссылке Работники. Откроется новое окно, в котором выберите опцию Report Attributes.

2.  В секции Column Attributes у атрибута Emp_Id щелкните по иконке слева. Откроется страница редактирования атрибута-столбца Emp_Id.

3.  В секции Column Link:

а.  В поле Link Text установите текст, представляющий собой html-тэг для отображения необходимой иконки (щелкните по ссылке [Icon 5]);

б.  В поле Page из выпадающего списка выберите страницу Создать/Редактировать Работника. Соответствующий номер страницы автоматически установится в поле;

в.  В списке параметров ссылки для параметра Item 1 установите следующие значения: в поле Name – P?_EMPLOYEE_ID (напомним, что? – номер страницы в приложении), в поле Value 1 - #Emp_id# (сделать это лучше, щелкнув по иконке ): значение P?_EMPLOYEE_ID – это имя скрытого поля (item) на странице?_Создать/Редактировать Работника, представляющего идентификатор работника; значение #Emp_Id# – это подстановочная строка, вместо которой APEX подставит выбранное пользователем значение столбца Emp_Id (в котором содержится идентификатор работника) из отчета Работники.

4.  Щелкните по кнопке Apply Changes в верхней части страницы. Вы вернетесь на страницу Report Attributes. Обратите внимание, что в списке столбцов отчета у столбца Emp_Id появилась пометка Link, которая говорит о том, что с этим столбцом ассоциирована ссылка.

Находясь на странице Report Attributes, русифицируйте заголовки отчета:

Безымянный.bmp

2.  Расчет числа работников в подразделении

Для решения задачи:

1.  Откройте определение страницы Подразделения.

2.  В разделе Page Rendering найдите секцию Regions и щелкните по ссылке Подразделения. Найдите секцию Source и замените текст запроса в текстовом поле Region Source на следующий:

SELECT d. department_id "Department ID",

d. department_name "Department Name",

count('x') "Number of Employees",

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

Обратите внимание на использование групповой функции count().

3.  Щелкните по кнопке Apply Changes и запустите страницу:

Безымянный.bmp

Обратите внимание на столбец Число работников.

Задание к работе:

1.  В соответствии с семантикой предметной области выполните расчеты, аналогичные приведенным в работе.

2.  Покажите результат преподавателю.

[1] Для уточнения названий столбцов таблиц можно воспользоваться средством для просмотра структуры БД – «браузером объектов» (SQL Workshop>ObjectBrowser), открыв его в отдельной вкладке интернет-браузера

[2]См. «Importing Export Files»в руководстве «Oracle Application Express Application Builder User’s Guide».

[3]См. «Installing Export Files» в руководстве «Oracle Application Express Application Builder User’s Guide».

[4]См. «Adding Developer Comments» в руководстве «Oracle Application Express Administration Guide»

[5]Более подробно см. «Managing Application Express Users» в руководстве «Oracle Application Express Administration Guide»

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11