Поделиться через


Объект 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 . Последний объект ErrorErrors.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