Вопрос
Выполнение операции с SQL-сервером завершилось неудачей. Как определить факт того, что произошла ошибка, и какая именно ошибка произошла?
Ответ
Тот факт, что операция на сервере закончилась неудачей, определяется в зависимости от используемого способа обращения к серверу.
Если обращение идет через функции SQLExec(), то сама эта функция возвращает значение меньше нуля в случае ошибки.
Если обращение идет через RemoteView или Cursor Adapter, то операция сброса изменений на сервер осуществляется функцией TableUpdate(). В случае неудачи (ошибки) эта функция вернет .F.
Для определения причины возникновения ошибки предназначена функция AERROR(). Использовать можно следующим образом:
* При работе через SQLExec() IF SQLExec(...)<0 LOCAL laError(1) =AERROR(laError) * Анализ массива laError для уточнения причины ошибки ENDIF * При работе через Remote View или Cursor Adapter IF TableUpdate(.T.,.T.,"MyView")=.F. LOCAL laError(1) =AERROR(laError) * Анализ массива laError для уточнения причины ошибки ENDIF
При работе с удаленными данными первый элемент полученного массива всегда будет иметь значение 1526 - ошибка ODBC-соединения.
Остальные элементы массива будут содержать информацию об ошибке самого сервера. Т.е., какая именно ошибка произошла на сервере.