Гость
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / порядок срабатывания триггеров / 14 сообщений из 14, страница 1 из 1
12.09.2013, 07:39
    #38394243
luchik_5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
Добрый день, уважаемые Гуру!
Есть форма в которой на уровне формы висят следующие триггера:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
WHEN-WINDOW-RESIZED
ON-ERROR
POST-QUERY
WHEN-NEW-RECORD-INSTANCE
WHEN-WINDOW-ACTIVATED
KEY-DOWN
KEY-UP
WHEN-MOUSE-DOUBLECLICK
KEY-NEXT-ITEM
KEY-PREV-ITEM
PRE-POPUP-MENU
WHEN-CREATE-RECORD
WHEN-WINDOW-CLOSED
KEY-EXIT
WHEN-MOUSE-CLICK
WHEN-NEW-FORM-INSTANCE
KEY-COMMIT
POST-FORMS-COMMIT

И есть куча блоков из которых могу выделить только один (KR_BLOCK). Этот блок не является базовым блоком (Database data block=No). На уровне этого блока висит триггер WHEN-CREATE-RECORD.

Запускаю форму через адресную строку с указанием данных для коннекта к БД.
При загрузке сразу срабатывает триггер WHEN-CREATE-RECORD на уровне блока KR_BLOCK. Почему так? Разве не должен перед этим отработать триггер WHEN-NEW-FORM-INSTANCE? Подскажите в какую сторону капнуть. Может есть какое-то свойство блока на которое следует обратить внимание?

P.S. На какой бы из триггеров на уровне формы не поставить брейкпоинт, никогда туда не попадаем, всегда первым делом идем на блок KR_BLOCK в триггер WHEN-CREATE-RECORD
Версия формсов 11.1.2.1.0
...
Рейтинг: 0 / 0
12.09.2013, 09:42
    #38394291
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
luchik_5,

Триггеры When-New-%-Instance срабатывают после того, как курсор встал в первый элемент первого блока формы.
Т.е. после того как навигация завершилась.

Триггер When-Create-Record срабатывает раньше, т.к. для того чтобы войти в элемент, нужно сначала создать запись.

Если нужен триггер на уровне формы, который сработает самым первым, то это Pre-Form.
...
Рейтинг: 0 / 0
12.09.2013, 11:17
    #38394431
luchik_5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
Павел Лузанов ,

Спасибо. Прояснили с порядком срабатывания триггеров. Но появился ещё один вопрос.
У меня блок, в который уходит, стоит далеко не первым в списке. Почему тогда все же именно в него? Или
"первый блок формы" как-то по другому считается?
...
Рейтинг: 0 / 0
12.09.2013, 11:26
    #38394453
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
luchik_5,

Посмотри свойство формы First Navagation Data Block
...
Рейтинг: 0 / 0
12.09.2013, 11:33
    #38394465
luchik_5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
Павел Лузанов,

<Null>
...
Рейтинг: 0 / 0
12.09.2013, 12:07
    #38394525
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
luchik_5,

Если это свойство не заполнено, и блок не первый в объектном навигаторе, то переход в него осуществляется в одном из стартовых триггеров.

Из перечисленных тобой в первом сообщении, я бы заглянул в When-Window-Activated.

Если не получается найти где происходит переход, то включай отладку.
Чудес не бывает :-)
...
Рейтинг: 0 / 0
12.09.2013, 13:54
    #38394709
luchik_5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
Павел Лузанов,

проводили трассировку формы. Первый же триггер срабатывает именно в том блоке. Из всего проекта таких две формы. Остальные нормально отрабатывают.

Ладно, совет принят к сведению. Буду рыть дальше. Большое спасибо!
...
Рейтинг: 0 / 0
12.09.2013, 14:21
    #38394759
OldBoyOdeSu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
Павел ЛузановЧудес не бывает :-)
Сам то понял чё сказал? это же формсы, они сами по себе чудесны.
...
Рейтинг: 0 / 0
12.09.2013, 15:03
    #38394844
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
luchik_5проводили трассировку формы. Первый же триггер срабатывает именно в том блоке...

Надо искать дальше.

На всякий случай.
Порядок срабатывания триггеров можно посмотреть запустив форму с debug_messages=yes
Ну и под трассировкой я имел в виду не трассировку оракловой сессии, а forms trace
...
Рейтинг: 0 / 0
12.09.2013, 15:12
    #38394859
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
OldBoyOdeSuСам то понял чё сказал?
Я очень хорошо понимаю, о чем говорю.
...
Рейтинг: 0 / 0
12.09.2013, 20:00
    #38395217
luchik_5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
Павел Лузанов ,

Да, именно трассировка forms trace и проводилась. Могу файлик прикрепить.

В триггере When-Window-Activated никаких действий по переходу в блок нет. Да и если даже просто кинуть breakepoint на первую строку в каждом из этих триггеров + на триггер when-create-record блока, то при запуске сразу попадаем на breakepoint в триггере when-create-record на уровне блока...

Может есть какие-то особенности в свойствах элементов блока из-за которых может происходить подобное?

OldBoyOdeSu ,
Формсы конечно иногда чудят, но не на столько что бы "скакать" по треггирам в непонятном порядке без причин.
Скорей всего что-то упускаю из вида...
...
Рейтинг: 0 / 0
12.09.2013, 21:20
    #38395278
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
luchik_5Да, именно трассировка forms trace и проводилась. Могу файлик прикрепить.

Файлик прикрепи (можешь в личку кинуть).

И еще вопрос. Курсор в каком блоке останавливается после запуска формы? В KR_BLOCK?
...
Рейтинг: 0 / 0
13.09.2013, 02:42
    #38395391
brig_2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
Павел Лузановluchik_5Да, именно трассировка forms trace и проводилась. Могу файлик прикрепить.

Файлик прикрепи (можешь в личку кинуть).

И еще вопрос. Курсор в каком блоке останавливается после запуска формы? В KR_BLOCK?

так на всякий случай: Trigger Execution Sequence in Forms 4.5 .
В хелпах по более поздним версиям есть такие же статьи.
...
Рейтинг: 0 / 0
13.09.2013, 06:35
    #38395417
luchik_5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
порядок срабатывания триггеров
Павел Лузанов
Файлик прикрепи (можешь в личку кинуть).

И еще вопрос. Курсор в каком блоке останавливается после запуска формы? В KR_BLOCK?
Посмотрите почту. Что-то не вижу на форуме возможность отправлять ЛС.

brig_2000так на всякий случай: Trigger Execution Sequence in Forms 4.5 .
В хелпах по более поздним версиям есть такие же статьи.
Большое спасибо за ссылочку на статью.
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / порядок срабатывания триггеров / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]