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

 

Oracle Forms 6i

Практические занятия

 

Урок 2. Создание триггера Pre-Insert . 

               Применение последовательности Sequence  для заполнения  поля первичного ключа таблицы.

               Улучшение внешнего вида формы.

 

 

Недостатком формы из урока 1 является необходимость пользователю заполнять поле Dol_Id, которое является первичным ключом таблицы, а значит должно иметь уникальное значение и, если  Вы  использовали дублирование записи, то при сохранении получили сообщение об ошибке.

 

Устранить этот недостаток можно, если для каждой новой записи в блок DOL заполнять поле Dol_Id  автоматически, при этом, исключая участие пользователя.

 

Для формирования последовательности неповторяющихся значений поля Dol_Id применим объект базы данных Sequence, в данном случае для таблицы DOL создана последовательность DOL_SEQ.

 

Для получения очередного значения из последовательности необходимо выполнить команду

 

  Select Dol_Seq.NextVal into <переменная типа Number> from Dual;

     

Свяжем  эту последовательность с событием добавления новой записи в блок.

 

Для этого создадим на уровне блока DOL триггер PRE-INSERT, тело которого будет отрабатывать перед каждым  добавлением  новой записи  в блоке:

 

В навигаторе объектов раскройте мышью блок DOL, поместите курсор  на пустой  узел Triggers , нажмите кнопку Create на палитре инструментов Навигатора  или пункт меню Navigator / Create.  Появился диалог выбора типа триггера , где необходимо выбрать триггер PRE-INSERT и нажать кнопку OK

 


Эти действия вызвали редактор PL SQL  для  описания тела триггера.

Напишем в нем уже известную нам команду получения  уникального числа из последовательности DOL_SEQ, а в качестве <переменной типа Number> используем само поле dol_id:

 

 

Формат обращения к значению поля любого блока -  :< Имя блока >.< Имя поля >

       

Нажмите кнопку Compile для проверки правильности синтаксиса выражения,  а затем Close.

 

Триггер готов к работе.

 

 

Сохраните форму под именем Lesson2, используя меню File / Save As…

Измените имя модуля с LESSON1 на LESSON2, используя окно свойств модуля формы. Для этого поместите курсор на название модуля и выполните пункт меню

       Tools / Properties. Измените значение свойства Name. Сохраните форму…

 

       Запустим форму на выполнение.

 

Выполните запрос F8. Поместите курсор на последнюю запись, сдублируйте ее несколько раз, сохраните изменения  F10;

Обратите внимание на значение полей DOL_ID - они  имеют не те значения, которые имела дублируемая запись, а значения из последовательности…

 

       Завершите работу формы…

        

     

Теперь можно заняться улучшением внешнего вида формы :

 

*   Уберем с канвы уже не нужное пользователю поле  DOL_ID

*   Изменим свойства окна Window0

*   Программно изменим свойства окна RunForm

 

 

Вызовите редактор канвы ( двойной клик мыши на иконке CANVAS1 в навигаторе )

 

Выделите столбец DOL_ID блока правой кнопкой мыши и вызовите его свойства или используйте меню Tools / Properties


В свойствах поля отменим принадлежность его канве CANVAS1.

Для отмены принадлежности поля канве выберите в свойстве CANVAS  значение <Null> ,    при  этом  поле пропадет с канвы, но не пропадет из дерева  формы :

 

 

В редакторе канвы  удалим статический текст DOL_ID, который был заголовком поля Dol_Id , можно удалить и рамку вокруг блока. Используя механизм взял и потащил  - Drug and Drop , переместите элементы на канве. Если есть  необходимость в выравнивании объектов, то используйте меню Arrange / Align Objects  с выделенными объектами. Чтобы  выделить несколько объектов  нажмите и держите клавишу Ctrl, а мышью отметьте необходимые объекты.

 

Измените размер канвы - для этого зацепите за ее правый нижний угол и протяните до необходимых размеров; Закройте Редактор Канвы.

 


Запомним ширину и высоту канвы из окна свойств для последующего установления тех же  значений у окна Window0 . Это необходимо чтобы содержимое окна гармонично вписывалось в него , а не было бы смещено в какую либо сторону :

 

      

Поместим курсор на объект Window0 , в окне его свойств установим необходимые значения Width и Height; А также определим заголовок окна Title «Должностные оклады»

      

 

Запустите форму на выполнение, Подвигайте окно Должностные оклады, попробуйте изменить его размер;

 

Закройте форму, Измените свойства Window0  - Fixed Size  и  Zoomable

 

Запустите форму, Подвигайте окно Должностные оклады попробуйте изменить его размер. Что Изменилось ? ;

 

Сохраните форму используя меню File / Save…