Поле первичного ключа должно иметь уникальное значение в пределах одной таблицы, поэтому лучше, если его значения будут устанавливаться автоматически, а не вводиться пользователем вручную.
Для того чтобы при создании новой записи в каждом блоке данных поле первичного ключа (в нашем случае поле «KOD») принимало автоматически следующее по порядку значение необходимо в каждом блоке объявить триггер «PRE-INSERT», который вызывается перед вставкой каждой строки в таблицу. Сделать это можно следующим образом:
1. В окне Object Navigator выбрать блок данных «DOVER» и в нем выбрать узел Triggers;
2. Затем вызвать контекстное меню и выбрать пункт Smart Triggers->Others->PRE-INSERT (рис. 94).
3. В появившемся окне ввести следующий код триггера:
4.
SELECT kod_d_dover.nextval INTO:DOVER.kod FROM dual; |
В результате перед вставкой каждой строки из последовательности «kod_d_dover» будет присваиваться следующее значение полю «kod» в блоке «DOVER».
Рисунок 94 - Создание триггера PRE-INSERT
Аналогичный триггер нужно создать и в блоке «DOVER_SP» со следующим кодом:
SELECT kod_d_dover_sp.nextval INTO:DOVER_SP.kod FROM dual; |
Теперь можно запустить форму на выполнение и проверить: появляются ли в кодовых полях значения при выборе того или другого блока данных. Start OC4J Instance должен быть запущен. Если он не запущен, запуститьте его Программы > Oracle Developer Suite > Forms Developer > Start OC4J Instance.
Скрытие кодовых полей
Чтобы у пользователя не было доступа к кодовым полям в блоках данных, эти поля необходимо скрыть. Вызовем Property Palette для элемента «KOD» блока данных «DOVER» (см. рис. 95)и установим свойство «Canvas» этого элемента в «Null» значение, после этого поле «KOD» должно исчезнуть в окнес закладки «Шапка документа».
Таким же образом установим свойство «Canvas» для элементов «KOD» и «KOD_D_DOVER» блока «D_DOVER_SP».
Рисунок 95 - Скрытие кодовых полей