Баксараев Андрей
Oracle
REPORTS 6i
Практические занятия
Урок 6. Форма
параметров . Триггеры форматирования
Мы подошли к моменту создания интеллектуального отчета, в
котором мы могли бы выбрать по какому отделу нам нужна информация и
выделялись цветом фамилии сотрудников у которых оклад меньше заданного…
Для этого в
навигаторе создадим два параметра
P_1 - Список отделов
определите его свойства как Number
определите List of
Values как Select
Statement
Select otd_id, name from otd
P_2 - Ограничение на оклад
определите его свойства как Number
определите его начальное значение Initial Value 1000000

Через меню Tools
\ Default Parameter Form вызовите диалог создания
формы по умолчанию, в которой выключите все системные параметры и
включите пользовательские ; Укажите их заголовки – Label Можете
изменить Титул и Подсказку на форме:

В редакторе модели данных измените запрос, добавив в него
ограничение на номер отдела:
select ADRES, name_d,oklad, KOL_DET, NAME_S, Name, TEL from SOTR ,
OTD, dol Where
otd_id=otd_otd_id and dol_id = dol_dol_id and
otd_id=:p_1
В навигаторе объектов создайте новую процедуру, которая нам
пригодится для создания триггера форматирования:
--Barsaraeff--
-- Процедура изменения
визуальных атрибутов для текущего поля
-- Применение : Выделить
цветом и фонтом название склада где
-- количество товара меньше
контрольного.
-- В Module Data Diagrammer ->
Ñâîéñòâà
áëîêà -> Column Text ->
-- -> Highliting
Condition äëÿ
ïîëÿ Name_Sklada
íàïèøåì :
--
--
HI_CON(:COL_TOVARA,'<<',:COL_CONTR,'green','courier',14);
--
-- Поле Name_Sklada при печати будет
выделено зеленым цветом
-- шрифтом COURIER размером в 14 пунктов.
--
--
--
--
PROCEDURE hi_con (p_1 number,c_1 char, p_2 number,
c_color
char,f_font char,s_size number) IS
BEGIN
if c_1='<<' then
if p_1 < p_2 then null;
else return; end if;
end if;
if c_1='>>' then
if p_1 > p_2 then null;
else return; end if;
end if;
if c_1='==' then
if p_1 = p_2 then null;
else return; end if;
end if;
if c_1='<=' then
if p_1 <= p_2 then null;
else return; end if;
end if;
if c_1='>=' then
if p_1 >= p_2 then null;
else return; end if;
end if;
srw.attr.mask := SRW.SZ_ATTR +
SRW.FACE_ATTR;
srw.attr.face := f_font ;
srw.attr.sz := s_size;
srw.set_attr (0,
srw.attr);
srw.attr.mask := SRW.WEIGHT_ATTR +
SRW.GCOLOR_ATTR;
srw.attr.weight :=
SRW.BOLD_WEIGHT;
srw.attr.gcolor := c_color;
srw.set_attr (0, srw.attr);
END;
Для выделения цветом Фамилии сотрудника необходимо вызвать
свойства поля F_Name_S и создать на него триггер форматирования
кнопкой Format Trigger
: Edit

Создайте функцию форматирования:

Скомпилируйте
весь отчет и запустите его на выполнение , Выберите отдел из списка и нажмите кнопку Run Report


Современный способ задания условий форматирования
Так же можно изменять вид поля, используя свойство поля Conditional Formatting

При вызове откроется окно добавления условий на форматирование поля

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

Скомпилируйте весь отчет и запустите его на выполнение.
Выберите отдел из списка и нажмите
кнопку Run Report
Сохраните отчет под именем
Lesson_6,
используя меню File \ Save As …