Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Access 2013, Office 2013
Ошибки ADO сообщаются вашей программе как ошибки времени выполнения. Для их перехвата и обработки можно использовать механизм перехвата ошибок языка программирования. Например, в Visual Basic используйте инструкцию On Error . В Visual J++ используйте блок try-catch . В Visual C++ это зависит от метода, используемого для доступа к библиотекам ADO. В #import используйте блок try-catch . В противном случае программистам C++ необходимо явно получить объект ошибки, вызвав Метод GetErrorInfo. Следующая вложенная процедура Visual Basic демонстрирует перехват ошибки ADO:
' BeginErrorHandlingVB01
Private Sub Form_Load()
' Turn on error handling
On Error GoTo FormLoadError
'Open the database and the recordset for processing.
'
Dim strCnn As String
strCnn = "Provider='sqloledb';" & _
"Data Source='MySqlServer';" & _
"Initial Catalog='Northwind';Integrated Security='SSPI';"
' cnn is a Public Connection Object because
' it was defined WithEvents
Set cnn = New ADODB.Connection
cnn.Open strCnn
' The next line of code intentionally causes
' an error by trying to open a connection
' that has already been opened.
cnn.Open strCnn
' rst is a Public Recordset because it
' was defined WithEvents
Set rst = New ADODB.Recordset
rst.Open "Customers", cnn
Exit Sub
' Error handler
FormLoadError:
Dim strErr As String
Select Case Err
Case adErrObjectOpen
strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf
strErr = strErr & "Error reported by: " & Err.Source & vbCrLf
strErr = strErr & "Help File: " & Err.HelpFile & vbCrLf
strErr = strErr & "Topic ID: " & Err.HelpContext
MsgBox strErr
Debug.Print strErr
Err.Clear
Resume Next
' If some other error occurs that
' has nothing to do with ADO, show
' the number and description and exit.
Case Else
strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf
MsgBox strErr
Debug.Print strErr
Unload Me
End Select
End Sub
' EndErrorHandlingVB01
Эта процедура события Form_Load намеренно создает ошибку, пытаясь дважды открыть один и тот же объект Connection . При втором вызове метода Open активируется обработчик ошибок. В этом случае ошибка имеет тип adErrObjectOpen, поэтому обработчик ошибок отображает следующее сообщение перед возобновлением выполнения программы:
Error #3705: Operation is not allowed when the object is open.
Error reported by: ADODB.Connection
Help File: E:\WINNT\HELP\ADO260.CHM Topic ID: 1003705
Сообщение об ошибке содержит все сведения, предоставляемые объектом Err Visual Basic, за исключением значения LastDLLError , которое здесь не применяется. Номер ошибки указывает, какая ошибка произошла. Описание полезно в тех случаях, когда вы не хотите самостоятельно обрабатывать ошибку. Вы можете просто передать его пользователю. Хотя обычно требуется использовать сообщения, настроенные для приложения, вы не можете предвидеть каждую ошибку. описание дает некоторую подсказку о том, что пошло не так. В примере кода объект Connection сообщил об ошибке. Здесь вы увидите тип или программный идентификатор объекта, а не имя переменной.
Примечание.
Объект Err Visual Basic содержит только сведения о последней ошибке. Коллекция ADO Errors объекта Connection содержит по одному объекту Error для каждой ошибки, вызванной последней операцией ADO. Используйте коллекцию Errors вместо объекта Err для обработки нескольких ошибок. Дополнительные сведения о коллекции Errors см. в разделе Ошибки поставщика. Однако если нет допустимого объекта Connection , объект Err является единственным источником сведений об ошибках ADO.
Какие типы операций могут привести к ошибкам ADO? Распространенные ошибки ADO могут включать открытие объекта, например Connection или Recordset, попытку обновить данные или вызов метода или свойства, которые не поддерживаются поставщиком.
Ошибки OLE DB также можно передать в приложение как ошибки времени выполнения в коллекции Errors . Дополнительные сведения о номерах ошибок OLE DB см. в главе 16 справочника по программистам OLE DB.