Описание
Семейство Errors содержит все сохраненные объекты Error, каждый из которых описывает конкретную ошибку при операциях с объектами доступа к данным (DAO).
Замечания
Любая операция с участием объектов доступа к данным может привести к возникновению одной или нескольких ошибок. При возникновении каждой ошибки один или несколько объектов Error помещаются в семейство Errors объекта DBEngine. При возникновении ошибки в другой операции с объектами доступа к данным семейство Errors очищается и в него помещается новый объект Error.
Объект с максимальным номером в семействе Errors (DBEngine.Errors.Count - 1) соответствует ошибке, возвращаемой объектом Err Microsoft Visual Basic для приложений (VBA).
Операции DAO, в которых ошибки не возникают, не оказывают влияния на семейство Errors.
Для семейства Errors не выполняется операция добавления элементов, как это имеет место в других семействах, поэтому семейство Errors не поддерживает методы Append и Delete.
Набор объектов Error в семействе Errors описывает одну ошибку. Первый объект Error представляет ошибку низшего уровня, второй объект ошибку следующего уровня и т.д. Например, если ошибка ODBC возникает при попытке открыть объект Recordset, то первый объект Error содержит ошибку ODBC низшего уровня; следующие объекты-ошибки содержат ошибки ODBC, возвращаемые со следующих уровней программного обеспечения ODBC. В подобном случае диспетчер драйвера ODBC и, возможно, сам драйвер возвращают отдельные объекты Error. Последний объект Error содержит ошибку DAO, указывающую невозможность открытия объекта.
Просмотр сведений о конкретных ошибках в семействе Errors позволяет более точно определить в программах обработки ошибок причину и источник каждой ошибки и принять соответствующие меры для исправления ситуации.
Ключевое слово New было использовано при создании объекта, ставшего источником ошибки до своего добавления в семейство Errors, то семейство Errors объекта DBEngine не будет содержать ошибку, соответствующую этому объекту, поскольку еще не установлена связь этого объекта с объектом DBEngine. Однако сведения об этой ошибке будут доступны в объекте Err VBA.
Пример
Следующая программа создает ошибку, перехватывает ее и отображает свойства Description, Number, Source, HelpContext и HelpFile результирующего объекта Error.
Sub DescriptionX() Dim dbsTest As Database On Error GoTo ОбработчикОшибок ' Преднамеренно генерирует ошибку. Set dbsTest = OpenDatabase("NoDatabase") Exit Sub ОбработчикОшибок: Dim strError As String Dim errLoop As Error ' Отображает семейство Errors и отображает свойства ' каждого объекта Error. For Each errLoop In Errors With errLoop strError = "Ошибка #" & .Number & vbCr strError = strError & " " & .Description & vbCr strError = strError & " (Источник: " & .Source & ")" & vbCr strError = strError & "Нажмите F1 для вызова раздела " & .HelpContext & vbCr strError = strError & " из файла " & .HelpFile & "." End With MsgBox strError Next Resume Next End Sub