Шаг 26 - Метод Delete

Описание
Объекты Recordset — метод удаляет текущую запись в обновляемом объекте Recordset. В рабочей области ODBCDirect тип драйвера определяет, являются ли объекты Recordset обновляемыми и, как следствие, поддерживают ли они метод Delete.
Семейства — Метод удаляет постоянный объект из семейства.

наборЗаписей.Delete
семейство.Delete имяОбъекта

Параметры
наборЗаписей Объектная переменная, представляющая обновляемый объект Recordset, содержащий удаляемую запись.
семейство
Объектная переменная, представляющая семейство, из которого удаляется имяОбъекта.
имяОбъекта
Выражение или переменная типа String, представляющая значение свойства Name объекта в семействе.

Замечания
Метод Delete позволяет удалить постоянный объект. Однако в семействах Databases, Recordsets или Workspaces (каждое из которых сохраняется только в оперативной памяти) удаление открытого или активного объекта допускается только после закрытия этого объекта с помощью метода Close.
Удаление сохраненного объекта происходит немедленно, однако, при этом следует вызвать метод Refresh для обновления всех других семейств, на которые может повлиять изменение структуры базы данных.
При удалении объекта TableDef из семейства TableDefs происходит удаление как описания таблицы, так и всех данных в этой таблице.

Пример
Следующая программа использует метод Delete для удаления указанной записи из объекта Recordset. Для выполнения этой процедуры требуется процедура DeleteRecord.

Sub DeleteX()

	Dim dbsNorthwind As Database
	Dim rstEmployees As Recordset
	Dim lngID As Long

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

	' Добавляет временную запись, которая будет удалена.
	With rstEmployees
		.Index = "PrimaryKey"
		.AddNew
		!Имя = "Вова"
		!Фамилия = "Сидоров"
		.Update
		.Bookmark = .LastModified
		lngID = !КодСотрудника
	End With

	' Удаляет запись о сотруднике с указанным кодом.

	DeleteRecord rstEmployees, lngID

	rstEmployees.Close
	dbsNorthwind.Close

End Sub

Sub DeleteRecord(rstTemp As Recordset, lngSeek As Long)

	With rstTemp
		.Seek "=", lngSeek
		If .NoMatch Then
			MsgBox "Нет сотрудника с кодом #" & lngSeek & " в файле!"
		Else
			.Delete
			MsgBox "Запись для сотрудника #" & lngSeek & " удалена!"
		End If
	End With

End Sub

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