Баксараев Андрей

 

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 …