ByVal Hwnd As Long, ByVal szConnStrIn As String, _
ByVal cbConnStrIn As Integer, _
ByVal szConnStrOut As String, ByVal cbConnStrOutMax As_ Integer, _
pcbConnStrOut As Integer, ByVal fDriverCompletion As Integer) As Integer
Declare Function oSQLError Lib "odbc32.dll" _
Alias "SQLError" (ByVal henv As Long, ByVal hdbc As_ Long, _
ByVal hstmt As Long, ByVal szSqlState As String, _
pfNativeError As Long, ByVal szErrorMessage As String, _
ByVal cbErrorMsgMax As Integer, pcErrorMsg As Integer)_ As Integer
Объявленная выше последняя функция служит для обработки ошибок, которые могут
возникнуть и возникают при использовании ODBC API. ODBC поддерживает стандартную модель
обработки ошибок. Каждая функция ODBC возвращает некий код, одним из которых может быть
SQL_ERROR. Чтобы получить больше информации об ошибке, приложение вызывает функцию
SQLError().
Драйвер хранит информацию об ошибке в структурах henv, hdbc и hstmt и возвращает эту
информацию приложению, когда приложение вызывает SQLError(). Каждая функция может
вызвать ноль или больше ошибок.
Приложение обычно вызывает функцию SQLError(), когда предыдущий вызов ODBC функции
возвращает SQL_ERROR или SQL_SUCCESS_WITH_INFO. Приложение может тем не менее
вызвать SQLError() после вызова любой ODBC функции.
Функция SQLError() возвращает следующую информацию:
• SQLSTATE - стандартный идентификатор ошибки.
• Native Error Code - код ошибки, свойственный данному источнику данных.
• Error Message Text - описание ошибки.
Ошибки сохраняются для текущего указателя до тех пор, пока данный указатель не будет
использован в вызове следующей функции. К примеру, ошибки на hstmt для текущей функции
очищаются, как только другая функция будет выполнена с использованием такого же указателя.
Ошибки, хранимые для данного указателя, никогда не очищаются в результате вызова функции с
использованием указателя другого, хотя и родственного типа. Например, ошибки на hdbc не
очищаются, когда вызов делается к родственной hstmt.
Функция SQLError() возвращает ошибку из структуры, связанной с самым правым ненулевым
аргументом указателя. Приложение запрашивает информацию об ошибке в следующем порядке:
• Чтобы получить ошибки, связанные с окружением, приложение передает
соответствующий henv и включает SQL_NULL_HDBC и SQL_NULL_HSTMT в hdbc и hstmt
соответственно. Драйвер возвращает статус ошибки ODBC функции, вызываемой самой
последней с тем же самым henv.
• Для вывода ошибок, связанных с соединением, приложение передает соответствующий
hdbc плюс hstmt, равный SQL_NULL_HSTMT. В таком случае драйвер игнорирует аргумент
henv. Драйвер возвращает статус ошибки функции ODBC, вызванной самой последней с
hdbc.
• Для отслеживания ошибок, связанных с выражением, приложение передает
соответствующий указатель hstmt. Если вызов SQLError() содержит правильный
указатель hstmt, драйвер игнорирует аргументы hdbc и henv. Драйвер возвращает статус
ошибки самой последней функции ODBC, вызванной с указателем hstmt.
• Для отслеживания нескольких ошибок, вызываемых функцией, приложение обращается к
SQLError() несколько раз. Для каждой ошибки драйвер возвращает SQL_SUCCESS и
удаляет эту ошибку из списка доступных ошибок.
Когда отсутствует дополнительная информация по самому правому ненулевому указателю,
функция SQLError() возвращает SQL_NO_DATA_FOUND.
Declare Function oSQLExtendedFetch Lib "odbc32.dll" _
Alias "SQLExtendedFetch" (ByVal hstmt As Long, _
ByVal fFetchType As Long, ByVal irow As Integer, _
pcrow As Long, rgfRowStatus As Integer) As Integer
Declare Function oSQLFetch Lib "odbc32.dll" _
Alias "SQLFetch" (ByVal hstmt As Long) As Integer
Declare Function oSQLGetCursorName Lib "odbc32.dll" _
Alias "SQLGetCursorName" (ByVal hstmt As Long, _
ByVal szCursor As String, ByVal cbCursorMax As Integer, _
converted to PDF by HupBaH9I