Oracle Forms нажал на кнопку триггера для решения трех сценариев - PullRequest
0 голосов
/ 21 января 2010

Я пишу триггер при нажатии кнопки на кнопке сохранения для формы Oracle Forms 6i, и он должен выполнить несколько сценариев.

Вот некоторая справочная информация: поля, которые нас интересуют:

n_number,
alert_id,
end_date

Для всех трех сценариев мы сравниваем записи-кандидаты со следующими записями в базе данных (ради аргумент, давайте предположим, что они единственные записи в базе данных пока):

alert_id|| n_number|| end_date
-------------------------------------
       1||        5||      _______

       2||        6||    10/25/2009

Сценарий 1: пользователь вводит новую запись:

alert_id 1
n_number 5
end_date NULL

Цель: запретить пользователю вводить повторяющиеся строки

Сценарий 2: пользователь вводит новую запись:

alert_id 1
n_number 10
end_date NULL

Цель: уведомить пользователя о том, что этот alert_id уже существует, но при необходимости предоставить пользователю возможность зафиксировать строку.

Сценарий 3: пользователь вводит новую запись:

alert_id 2
n_number 6
end_date NULL

Цель: уведомить пользователя о том, что этот alert_id имел место в прошлом (т. Е. У него не нулевое значение end_date), но разрешить пользователю зафиксировать строку, если это необходимо.

Я написал код, который, кажется, соответствует первым двум сценариям, но не позволяет мне выполнить третий.

Проблемы: когда я вхожу в третий сценарий, мне предлагается зафиксировать запись, но когда я пытаюсь это сделать, появляется предупреждение «duplicate_stop», которое мешает мне.

Проблемы: я получаю следующую ошибку: ORA-01843: недопустимый месяц. При тестировании кода для третьего сценария в Toad (жесткое кодирование значений и т. Д.) Все было в порядке. Почему я сталкиваюсь с этими проблемами во время выполнения?

Помощь очень ценится.

Спасибо

1 Ответ

0 голосов
/ 21 января 2010

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

Ваш код для сценария # 1 проверяет уникальность на основе (alert_id, n_number). Я не знаю, как вы реализовали эту проверку, но вам нужно включить фильтр для end_date is null. Это позволит затем перейти от сценария № 3 к этому предупреждению.

Что касается вашей другой проблемы, то это указывает на некоторое несоответствие между определениями клиента и базы данных для NLS_DATE_FORMAT. Боюсь, это было слишком долгое время с тех пор, как я работал с Forms, но, похоже, я помню, что у него были свои места для определения таких вещей. Если вы не знаете, как это сделать, загляните в документы Forms Builder. Это должно быть там, где угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...