Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Перехват команды print при выполнении SQL-запроса


Автор: FreePaul 6.5.2006, 07:26
Здравствуйте!
Есть скрипт, написанный не мной, для периодического внесения исправлений в базу данных. Захотелось написать программу для него. Все вроде как сделал, осталась одна "малость": как мне перехватьть и вывести в MessageBox сообщение, которое в теле скрипта выводится в ResultsPane. 
То есть в скрипте есть к примеру такой кусок:
Код

...
f @@error <> 0 goto ErrQuit
    if @@trancount > 0 commit tran
    print ''
    print 'Связь между документами успешно установлена!'
end
else
begin
    print ''
    print 'Связь между документами с данными регномерами уже существует!'
end
...

и я хочу сообщение 'Связь между документами успешно установлена!' или 'Связь между документами с данными регномерами уже существует!' вывести в MessageBox своей программы.
Как это можно осуществить?  

База данных: MSSQL2000
Доступ через TAdoQuery в связке с TAdoConnection
BDS2006 

Автор: Vit 7.5.2006, 05:33
Никак. MDAC/ADO вообще не поддерживает передачу ошибок с уровнем ниже 16 и print. Сам бился над этим. Вроде в лоб решения проблемы не существует, возможно есть какие-то обходные пути типа прямых вызовов RPC или TDS или чтение каких-то логов или системных таблиц.   

Автор: FreePaul 10.5.2006, 02:00
А можно ли перехватить эти сообщения при помощи каких-либо других компонент? Если ДА, то каких? 

Автор: Vit 10.5.2006, 13:24
Компонентами вряд-ли... Копать в глубины реализации TDS 

Автор: Marduk 10.7.2009, 08:14
мне кажется можно extended stored proc создать которая бы посылала сообщения в приложение через UDP например, в делфи слушать этот порт, а на сервере использовать хранимку вместот print.
Код

f @@error <> 0 goto ErrQuit
    if @@trancount > 0 commit tran
    exec sp_SendUDPMessage '127.0.0.1', 'Связь между документами успешно установлена!'
end
else
begin
    exec sp_SendUDPMessage '127.0.0.1', 'Связь между документами с данными регномерами уже существует!'
end
...
 есть статья в drkb "обратная связь с SQL Server", там это описано

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)