powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вытянуть сообщение об ошибке
6 сообщений из 6, страница 1 из 1
Вытянуть сообщение об ошибке
    #35254960
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подсознательно понимаю, что этот вопрос должен быть не здесь, но все-таки...

Клиентская часть ПО пишется на С++, сервер - Sybase ASE 12.5...
Необходимо логировать все обращения к серваку со стороны клиента. В том числе и "завалы" (ошибки). На клиенте реализую обработку проблемных моментов через
Try {} catch(...) {}
Внимание вопрос: завалилась секция Try ушла в catch... КАК поймать дескрипшен ошибки, которую пригнал сервак? Т.е. в идеале хотелось бы в лог-файл писать полное сообщение от сервака (типа так же, как оно пишется при запуске запроса из Advantage и т.п.)
Т.е. по типу "Procedure 'Post_Planar_Proc', Line 5: Arithmetic overflow during implicit conversion of NUMERIC value '-1' to a TINYINT field . "...

Подскажите, как это реализовать с минимальными потерями. Заранее спасибо!
...
Рейтинг: 0 / 0
Вытянуть сообщение об ошибке
    #35255438
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через что коннект к ASE идет?
Через OpenClient / OLEDB / ODBC / BDE

Если же через OpenClient, то все сообщения об ошибках, осуществляються через callback функцию, которая определяется в момент инициализации контекста коннекта. (сt_init)
...
Рейтинг: 0 / 0
Вытянуть сообщение об ошибке
    #35255783
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коннект делается через ADO...
Попытка добраться через коллекцию ошибок для ADOConnection
WideString Descr;
DM->DBp->Errors->Item[0]->Get_Description(Descr);
заваливается на стадии компиляции с ошибкой:
[Linker Error] Unresolved external 'System::__linkproc__ __fastcall CheckAutoResult()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\RELEASE\VCLE.LIB|syssupp

Хотя все линки настроенны корректно... Как еще можно докопаться до сообщения об ошибке?
...
Рейтинг: 0 / 0
Вытянуть сообщение об ошибке
    #35255965
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moris пишет:
> Если же через OpenClient, то все сообщения об ошибках, осуществляються
> через callback функцию, которая определяется в момент инициализации
> контекста коннекта. (сt_init)

Вовсе не обязательно, это - лишь один из двух возможных вариантов,
есть еще и другой (ct_diag). Но что OpenClient не будет бросать C++-ные
исключения - это точно. Потому что это - C-шная библиотека.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вытянуть сообщение об ошибке
    #35256121
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаем доку, она иногда бывает полезна.

OLE DB Provider User's Guide раздел Handling errors
...
Рейтинг: 0 / 0
Вытянуть сообщение об ошибке
    #35256642
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morisЧитаем доку, она иногда бывает полезна.
Она то может и полезна, но предназначена для АСЕ 15.0... А у меня 12.5

Вообще докопал через свой вариант. DM->DBp->Errors->Item[0]->Get_Description(Descr);

То, что С++ отваливался при компиляции оказалось багом самого билдера... Лечится следующей прагмой:
#pragma alias "@System@@CheckAutoResult$qqrv"="@System@@CheckAutoResult$qqrl"

И после этого все работает как часы. Можно получить доступ ко всем ошибкам (как к кодам, так и к описаниям), который только были у connection за время выполнения проги.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вытянуть сообщение об ошибке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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