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


Сбор ошибок (DAO)

Область применения: Access 2013, Office 2013

Коллекция Errors содержит все сохраненные объекты Error , каждый из которых относится к одной операции с dao.

Замечания

Любая операция с использованием объектов DAO может привести к одной или нескольким ошибкам. При возникновении каждой ошибки один или несколько объектов Error помещаются в коллекцию Errors объекта DBEngine . Когда другая операция DAO создает ошибку, коллекция Errors очищается, а новый набор объектов Error помещается в коллекцию Errors . Объект с наибольшим номером в коллекции Errors (DBEngine.Errors.Count — 1) соответствует ошибке, сообщаемой объектом Err microsoft Visual Basic для приложений (VBA).

Операции DAO, которые не создают ошибку, не влияют на коллекцию Ошибок .

Элементы коллекции Errors не добавляются, как обычно в другие коллекции, поэтому коллекция Errors не поддерживает методыAdd и Delete .

Набор объектов Error в коллекции Errors описывает одну ошибку. Первый объект Error — это ошибка наименьшего уровня, второй — следующий более высокий уровень и т. д. Например, если при попытке открыть объект Recordset возникает ошибка ODBC, первый объект ошибки содержит ошибку ODBC самого низкого уровня; последующие ошибки содержат ошибки ODBC, возвращаемые различными уровнями ODBC. В этом случае диспетчер драйверов ODBC и, возможно, сам драйвер возвращают отдельные объекты Error . Последний объект Error содержит ошибку DAO, указывающую, что объект не удалось открыть.

Перечисление конкретных ошибок в коллекции Errors позволяет подпрограммам обработки ошибок более точно определить причину и источник ошибки и предпринять соответствующие шаги для восстановления.

Примечание.

Если вы используете новый ключевое слово для создания объекта, который вызывает ошибку до или во время его размещения в коллекции Errors, коллекция не содержит сведений об ошибке об этом объекте, так как новый объект не связан с объектом DBEngine. Однако сведения об ошибке доступны в объекте VBA Err .

Пример

В этом примере выполняется принудительное выполнение ошибки, ее перехват и отображаются свойства 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