Объект Error (DAO)
Область применения: Access 2013, Office 2013
Объект Error содержит сведения об ошибках доступа к данным, каждая из которых относится к одной операции с DAO.
Замечания
Любая операция, включающая DAO, может привести к одной или нескольким ошибкам. Например, вызов сервера ODBC может привести к ошибке с сервера базы данных, ошибке из ODBC и ошибке DAO. При возникновении каждой такой ошибки объект Error помещается в коллекцию Errors объекта DBEngine . Таким образом, одно событие может привести к отображению нескольких объектов Error в коллекции Errors .
Когда последующая операция DAO создает ошибку, коллекция Errors очищается, а один или несколько новых объектов Error помещаются в коллекцию Errors . Операции DAO, которые не создают ошибку, не влияют на коллекцию Ошибок .
Набор объектов Error в коллекции Errors описывает одну ошибку. Первый объект Error — это ошибка наименьшего уровня (исходная ошибка), второй — следующей ошибкой более высокого уровня и т. д. Например, если при попытке открыть объект Recordset возникает ошибка ODBC, первый объект Errors(0) содержит ошибку ODBC самого низкого уровня; последующие ошибки содержат ошибки ODBC, возвращаемые различными уровнями ODBC. В этом случае диспетчер драйверов ODBC и, возможно, сам драйвер возвращают отдельные объекты Error . Последний объект Error — Errors.Count-1 — содержит ошибку DAO, указывающую, что объект не удалось открыть.
Перечисление конкретных ошибок в коллекции Errors позволяет подпрограммам обработки ошибок более точно определить причину и источник ошибки и предпринять соответствующие шаги для восстановления. Вы можете прочитать свойства объекта Error , чтобы получить конкретные сведения о каждой ошибке, в том числе:
Свойство Description , содержащее текст оповещения об ошибке, которое будет отображаться на экране, если ошибка не захвачена.
Свойство Number , содержащее длинное целое число константы ошибки.
Свойство Source , которое идентифицирует объект, вызваввший ошибку. Это особенно полезно при наличии нескольких объектов Error в коллекции Errors после запроса к источнику данных ODBC.
Свойства HelpFile и HelpContext , которые указывают на соответствующий файл справки Microsoft Windows и раздел справки соответственно (если таковые существуют) для ошибки.
Примечание.
При программировании в Microsoft Visual Basic для приложений (VBA) если вы используете New ключевое слово для создания объекта, который впоследствии вызывает ошибку перед добавлением этого объекта в коллекцию, коллекция Errors объекта DBEngine не будет содержать запись об ошибке этого объекта, так как новый объект не связан с DBEngine. Объекта. Однако сведения об ошибке доступны в объекте VBA Err . Код обработки ошибок VBA должен проверять коллекцию Errors всякий раз, когда вы ожидаете ошибку доступа к данным.
Если вы пишете централизованный обработчик ошибок, проверьте объект VBA Err , чтобы определить, являются ли сведения об ошибках в коллекции Errors допустимыми. Если свойство Number последнего элемента коллекции Errors (DBEngine.Errors.Count - 1) и значение объекта Err совпадают, можно использовать ряд инструкций Select Case для определения конкретной ошибки DAO или возникших ошибок. Если они не совпадают, используйте метод Refresh в коллекции Errors .
Пример
В этом примере выполняется принудительное выполнение ошибки, ее перехват и отображаются свойства Description, Number, Source, HelpContext и HelpFile результирующего объекта Error .
Sub DescriptionX()
Dim dbsTest As Database
On Error GoTo ErrorHandler
' Intentionally trigger an error.
Set dbsTest = OpenDatabase("NoDatabase")
Exit Sub
ErrorHandler:
Dim strError As String
Dim errLoop As Error
' Enumerate Errors collection and display properties of
' each Error object.
For Each errLoop In Errors
With errLoop
strError = _
"Error #" & .Number & vbCr
strError = strError & _
" " & .Description & vbCr
strError = strError & _
" (Source: " & .Source & ")" & vbCr
strError = strError & _
"Press F1 to see topic " & .HelpContext & vbCr
strError = strError & _
" in the file " & .HelpFile & "."
End With
MsgBox strError
Next
Resume Next
End Sub