Форум: "Начинающим";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
ВнизПолучение сообщения об ошибке Найти похожие ветки
← →
LexxX © (2005-12-25 10:14) [0]Доброго времени суток!
Есть такая задача: клиент, написанный на D7 отправляет на MSSQL 2000 скрипт, содержащий три операции INSERT в разные таблицы, причем перед внесением создается транзакция, а каждый инсерт проверяется на ошибку. Если ошибка внесения данных имеет место, то делается откат транзакции и последующие операции не выполняются.
Проблема: если произошла ошибка и транзакция откатилась, то я в клиенте не могу поймать это событие.. :((
Вопрос: как можно отловить ошибку "невнесения" данных средствами D7 ?
З.Ы. Проверку внесения данных в таблицу после выполнения скрипта не предлагать.
з.з.ы. Работаю через TADOQuery.
Спасибо.
← →
Vlad © (2005-12-25 10:20) [1]
> LexxX © (25.12.05 10:14)
> Вопрос: как можно отловить ошибку "невнесения" данных средствами
> D7 ?
что-то типа этого:ADOQuery.BeginTrans
try
ADOQuery.ExecSQL;
ADOQuery.CommitTrans;
except
ADOQuery.RollbackTrans;
raise;
end;
← →
Vlad © (2005-12-25 10:22) [2]Прошу прощения, методы BeginTrans, CommitTrans и RollbackTrans относятся к TADOConnection, т.ч. необходимо внести соотв. изменения
← →
LexxX © (2005-12-25 10:23) [3]Vlad © (25.12.05 10:20) [1]
ADOQuery.BeginTrans
try
ADOQuery.ExecSQL;
ADOQuery.CommitTrans;
except
ADOQuery.RollbackTrans;
raise;
end;
в том-то и дело, что транзакция внутри скл скрипта обозначена и откатывается там же, так что при любой ошибке Вами приведенный код не сработает!
з.ы.ADOQuery.BeginTrans
- а это что за метод такой?.. :-/
← →
Vlad © (2005-12-25 10:30) [4]
> LexxX © (25.12.05 10:23) [3]
> в том-то и дело, что транзакция внутри скл скрипта обозначена
> и откатывается там же
Ты либо возлагай работу с транзакциями на сервер, либо на клиента.
Если работа ведется на сервере, значит откат транзакции должен сопровождаться возбуждением собственного исключения (в том же скрипте)
Если на клиенте, тогда убери работу с транзакциями из скрипта, и делай как в [1], но с учетом моей поправки [2].
Пожалуй, все-таки перепишу :-)ADOConnection.BeginTrans
try
ADOQuery.ExecSQL;
ADOConnection.CommitTrans;
except
ADOConnection.RollbackTrans;
raise;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.014 c