Шаг 47 - Метод Close

Описание
Закрывает открытый объект доступа к данным (DAO).

объект.Close

Параметры
объект
Прототип объект представляет объектную переменную, задающую открытый объект Connection, Database, Recordset или Workspace.

Замечания
Закрытие объекта удаляет открытый объект из семейства, в которое он добавлен. Любая попытка закрыть стандартную рабочую область игнорируется.
При вызове метода Close для уже закрытого объекта Connection, Database, Recordset или Workspace возникает ошибка выполнения.
При выходе из процедуры, в которой описаны объекты Connection, Database или Recordset, эти объекты закрываются, все незавершенные транзакции свертываются, а результаты всех незаконченных операций редактирования теряются.
Попытка закрыть объект Connection или Database при наличии открытых объектов Recordset приводит к закрытию объектов Recordset и отмене всех незавершенных операций обновления или изменения. Аналогично, попытка закрыть объект Workspace при наличии любых открытых объектов Connection или Database приводит к закрытию объектов Connection и Database, в результате чего будут закрыты принадлежащие им объекты Recordset.
Применение метода Close к одному из объектов Recordset (оригиналу или копии) не влияет на второй объект.
Для удаления объектов из обновляемых семейств, отличных от семейств Connections, Databases, Recordsets и Workspaces, следует применять к этим семействам метод Delete. Добавление новых компонентов в семейства Containers, Documents и Errors не допускается.
Альтернативой методу Close может служить задание для объектной переменной значения Nothing (Set dbsTemp = Nothing).

Пример
Следующая программа использует метод Close для закрытия объектов Recordset и Database. Демонстрируется также потеря несохраненных изменений при закрытии объекта Recordset.

Sub CloseX()

	Dim dbsNorthwind As Database
	Dim rstEmployees As Recordset

	Set dbsNorthwind = OpenDatabase("Борей.mdb")
	Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники")

	' Вносит изменения в запись, но закрывает набор записей
	' до сохранения изменений.
	With rstEmployees
		Debug.Print "Исходные данные"
		Debug.Print "    Имя - Телефон"
		Debug.Print "    " & !Имя & " " & !Фамилия & " - " & !Телефон
		.Edit
		!Телефон = "9999"
		.Close
	End With

	' Повторно открывает объект Recordset, чтобы показать, 
	' что данные не были изменены.
	Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники")

	With rstEmployees
		Debug.Print "После вызова метода Close"
		Debug.Print "    Имя - Телефон"
		Debug.Print "    " & !Имя & " " & !Фамилия & " - " & !Телефон
		.Close
	End With
	dbsNorthwind.Close
End Sub

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