powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разобраться с тригером
6 сообщений из 6, страница 1 из 1
Разобраться с тригером
    #33378710
piki_piki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите разобраться с такой проблемой:
Создал тригер на изменение, примерно такого вида:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Procedure TRIG_Edit_Links
	Local lnVno_Mon
	Select TLinks
             ....
	if m.lnVno_Mon =  20 
	     RETURN .f.   && Вот тут интересует
	ENDIF
             ....
Endproc
При выполнениии этого условия сам фокс светит мне сообщение triger failed in TLinks:
Посмотрел, это ошибка 'Trigger failed in "cursor". (Error 1539)'

1) Как самостоятельно создать сообщение ( таблица не буферизирована и буферизировать ее я не собираюсь), через ON Error ловить ?
2) Что нужно делать, если получиться съэмулировать сообщение фокса, чтобы
выполнить те же действия что делает фокс по нажатию на кнопки
ОК и Revert в окне сообщении об ошибке тригера ?
...
Рейтинг: 0 / 0
Разобраться с тригером
    #33378824
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
piki_pikiСоздал тригер на изменение, примерно такого вида:
...
При выполнениии этого условия сам фокс светит мне сообщение triger failed in TLinks:
Посмотрел, это ошибка 'Trigger failed in "cursor". (Error 1539)'

1) Как самостоятельно создать сообщение ( таблица не буферизирована и буферизировать ее я не собираюсь), через ON Error ловить ?
Да. Без вариантов (ну, или TRY...CATCH, что, по сути, то же самое). Альтернатива - только буферизация
...
Рейтинг: 0 / 0
Разобраться с тригером
    #33378855
piki_piki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня вьюха на эту таблицу буферизованная. Смысла нет еще и таблицу буферить.
Ну допустим перехвачу я эту ошибку. Как принять или откатить изменнения, что там фокс делает ? Сам транзакцию включает ?
...
Рейтинг: 0 / 0
Разобраться с тригером
    #33379050
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
piki_pikiА у меня вьюха на эту таблицу буферизованная.
Этого вполне достаточно. В каком режиме буферизации находится твой View?Как ты сбрасываешь буфер этого View?

Действия должны быть примерно такие:

Код: plaintext
1.
2.
3.
4.
5.
6.
IF TableUpdate(.T.,.T.,"MyView")=.F.
	* Уточняем причину ошибки
	LOCAL laError
	=AERROR(laError)
	* По результату анализа выдаем свое сообщение об ошибке
ENDIF

Вот в этом случае никаких системных сообщений об ошибке не появляется. Все вполне управляемо.
...
Рейтинг: 0 / 0
Разобраться с тригером
    #33379400
piki_piki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
...
Рейтинг: 0 / 0
Разобраться с тригером
    #33382832
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi piki_piki!

> Создал тригер на изменение, примерно такого вида:

В триггере КРАЙНЕ нежелательно что-то трогать в той таблице для которой он
вызван, а кроме того в "правильном" триггере в принципе не должно быть
ссылок на алиасы открытые не им самим. Мало ли что - может я открою эту
таблицу с ALIAS boo - и упадёт твой триггер :)

> RETURN .f. && Вот тут интересует

> При выполнениии этого условия сам фокс светит мне сообщение triger failed
> in TLinks:

Правильно светит. Так и должно быть.

> 1) Как самостоятельно создать сообщение ( таблица не буферизирована и
> буферизировать ее я не собираюсь), через ON Error ловить ?

Сделать глобальный объект - переменную или массив. И при обработке ошибки
1539 анализировать этот глобальный объект.

> 2) Что нужно делать, если получиться съэмулировать сообщение фокса...

Не понял совершенно...

Советую создать тестовую базу, в ней пару таблиц, связь между ними, потом
настроить RI сгенерировать стандартные триггера ссылочной целостности -
потом ВНИМАТЕЛЬНО изучить код созданный генератором RI. Подумать
(неоднократно!) почему там сделано так а не иначе - поэкспериментировать...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разобраться с тригером
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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