Баксараев Андрей
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…