Форум: "Базы";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
ВнизГенерация ошибки в MSSQL2000 и перехват ее в Delphi Найти похожие ветки
← →
Alex-A (2002-06-14 10:38) [0]Есть хранимая процедура в которой генерируется сообщение об ошибке:
RAISERROR("Error",16,1) WITH NOWAIT
Делфийское приложение нормально перехватывает его
try
AdoStoredProc.ExecProc; // Вызов хранимой процедуры
except
on E:EOleException do ShowMessage(E.Message);
end;
НО!!!
Если перед RaisError выполняется обновление данных (UPDATE, INSERT - все равно), то ошибка в приложении не перехватывается.
Почему это может быть ?!
← →
TSV (2002-06-14 12:06) [1]Попробуй опцию
WITH SETERROR
.
← →
Alex-A (2002-06-17 06:41) [2]Не помогает WITH SETERROR :(
Может какой глюк в компонентах ADO?
запускаю процедуру в Query Analyzer-е все нормально - ошибка поднимается!
← →
Fay (2002-06-17 10:49) [3]raiserror 50001 ""
← →
Alex-A (2002-06-17 13:27) [4]2Fay
1. raiserror 50001 "" - не помогает тоже
2. мне нужно осмысленное (текстовое) сообщение об ошибке, а добавлять в sysmessages я не могу
← →
Александр Спелицин (2002-06-17 13:33) [5]RaisError 50001 "Ваш текст ошибки".
← →
Alex-A (2002-06-17 13:58) [6]Как послать текст ошибки я знаю.
Я про то что не всегда она в Delphi перехватывается.
(см. начало топика)
← →
unfam (2002-06-17 14:25) [7]Все дело в том, что ошибка возвращается всегда, но в подавляющем большинстве случаев операции INSERT и UPDATE выполняются над набором записей и ошибка "перехватывается", если она произошла при обработке первой записи, если же ошибка случилась на, допустим, 12 из 345, то надо просто "пробежать" в цикле по коллекции Errors TADOConnection и вручную вывести сообщение об ошибке
← →
Alex-A (2002-06-17 16:02) [8]2unfum
Вот спасибо!
Все получилось - перехватывается!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c