Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Access 2013, Office 2013
При возникновении ошибки поставщика возвращается ошибка времени выполнения -2147467259. При появлении этой ошибки проверка коллекцию Ошибок активного объекта Connection, которая будет содержать одну или несколько ошибок, описывающих случившееся.
Коллекция ошибок ADO
Так как конкретная операция ADO может вызвать несколько ошибок поставщика, ADO предоставляет коллекцию объектов ошибок через объект Connection . Эта коллекция не содержит объектов, если операция завершается успешно, и содержит один или несколько объектов Error , если что-то пошло не так и поставщик вызвал одну или несколько ошибок. Проверьте каждый отдельный объект ошибки, чтобы определить точную причину ошибки.
Завершив обработку всех возникших ошибок, можно очистить коллекцию, вызвав метод Clear . Особенно важно явно очистить коллекцию Errors , прежде чем вызывать метод Resync, UpdateBatch или CancelBatch для объекта Recordset , метод Open для объекта Connection или задать свойство Filter для объекта Recordset . Очистив коллекцию явным образом, можно убедиться, что все объекты Error в коллекции не остались после предыдущей операции.
Некоторые операции могут создавать предупреждения, а также ошибки. Предупреждения также представлены объектами Error в коллекции Errors . Когда поставщик добавляет предупреждение в коллекцию, он не создает ошибку во время выполнения. Проверьте свойство Count коллекции Errors, чтобы определить, было ли предупреждение создано определенной операцией. Если число равно одному или больше, в коллекцию добавлен объект Error . Определив, что коллекция Errors содержит ошибки или предупреждения, можно выполнить итерацию по коллекции и получить сведения о каждом из объектов Error , которые она содержит. Это демонстрируется в следующем кратком примере Visual Basic:
' BeginErrorHandlingVB02
Private Function DeleteCustomer(ByVal CompanyName As String) As Long
On Error GoTo DeleteCustomerError
rst.Find "CompanyName='" & CompanyName & "'"
DeleteCustomerError:
Dim objError As ADODB.Error
Dim strError As String
If cnn.Errors.Count > 0 Then
For Each objError In cnn.Errors
strError = strError & "Error #" & objError.Number & _
" " & objError.Description & vbCrLf & _
"NativeError: " & objError.NativeError & vbCrLf & _
"SQLState: " & objError.SQLState & vbCrLf & _
"Reported by: " & objError.Source & vbCrLf & _
"Help file: " & objError.HelpFile & vbCrLf & _
"Help Context ID: " & objError.HelpContext
Next
MsgBox strError
End If
End Function
' EndErrorHandlingVB02
Подпрограмма обработки ошибок включает цикл For Each , который проверяет каждый объект в коллекции Errors . В этом примере он просто накапливает сообщение для отображения. В рабочей программе необходимо написать код для выполнения соответствующей задачи для каждой ошибки, например для закрытия всех открытых файлов и упорядоченного завершения работы программы.
Объект Error
Изучив объект Error , можно определить, какая ошибка произошла, и, что важнее, какое приложение или какой объект вызвал ошибку. Объект Error имеет следующие свойства:
Имя свойства |
Описание |
|---|---|
Описание |
Текстовое описание возникной ошибки. |
HelpContext, HelpFile |
Ссылается на раздел справки и файл справки, которые содержат описание произошедшей ошибки. |
NativeError |
Номер ошибки для конкретного поставщика. |
Number |
Длинное целое число, представляющее число (указанное в errorValueEnum) возникщей ошибки. |
Source |
Указывает имя объекта или приложения, которые вызвали ошибку. |
Sqlstate |
Код ошибки из пяти символов, который поставщик возвращает в процессе выполнения инструкции SQL. |
Объект ADO Error очень похож на стандартный объект Err Visual Basic. Его свойства описывают возникную ошибку. В дополнение к номеру ошибки вы также получаете два связанных фрагмента информации. Свойство NativeError содержит номер ошибки, относящийся к используемому поставщику. В предыдущем примере поставщик является поставщиком Microsoft OLE DB для SQL Server, поэтому NativeError будет содержать ошибки, характерные для SQL Server. Свойство SQLState содержит пятибуквенный код, описывающий ошибку в инструкции SQL.
Ошибки Event-Related
Объект Error также используется при возникновении ошибок, связанных с событиями. Вы можете определить, произошла ли ошибка в процессе, который вызвал событие ADO, проверив объект Error, переданный в качестве параметра события.
Если операция, вызывающая событие, успешно завершена, параметру adStatus обработчика событий будет присвоено значение adStatusOK. С другой стороны, если операция, которая вызвала событие, была неудачной, параметру adStatus присваивается значение adStatusErrorsOccurred. В этом случае параметр pError будет содержать объект Error , описывающий ошибку.