Шаг 28 - Семейство Errors

Описание
Семейство 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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.