Шаг 114 - Метод AddNew

Описание
Создает новую запись в обновляемом объекте Recordset.

наборЗаписей.AddNew

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

Замечания
Метод AddNew создает и добавляет новую запись в объект Recordset с именем наборЗаписей. Данный метод присваивает всем полям записи значения Null (пустые значения, присваивающиеся полям объекта Recordset табличного типа по умолчанию) или значения по умолчанию, определенные пользователем.
После внесения изменений в новую запись следует вызвать метод Update для сохранения изменений и добавления записи в объект Recordset. До вызова метода Update изменения в базу данных не заносятся.
Если вызвать метод AddNew, а затем, не вызывая метод Update, выполнить любую операцию, приводящую к переходу на другую запись, то все изменения будут потеряны без предупреждения. Кроме того, при закрытии объекта Recordset или завершении процедуры, в которой описан сам объект Recordset или вмещающий объект Database, то новая запись будет потеряна без предупреждения.
Если при использовании метода AddNew в рабочей области ядра Microsoft Jet ядро базы данных должно создать новую страницу для хранения текущей записи, то устанавливается жесткая блокировка страницы. Если новая запись помещается на существующую страницу, применяется нежесткая блокировка.
Если пользователь не осуществил переход на последнюю запись объекта Recordset, то записи, добавляемые другими процессами в основные таблицы, могут быть включены только в том случае, если их удается разместить после текущей записи. При добавлении записи пользователем в открытый им объект Recordset эта запись будет видимой в объекте Recordset и будет включена в основную таблицу, где она станет видимой для любого нового объекта Recordset.
Положение новой записи в наборе зависит от типа объекта Recordset:
1. В объектах Recordset типа динамического набора записей новая запись будет добавлена в конец набора вне зависимости от любых правил сортировки или упорядочивания, которые действовали в момент открытия объекта Recordset.
2. В объектах Recordset типа таблицы, имеющих заданное значение свойства Index, записи будут помещены в соответствующее положение, определяемое порядком сортировки. Если значение свойства Index не задано, то записи добавляются в конец набора записей.
Текущей записью остается та запись, которая была текущей до применения метода AddNew. При необходимости сделать текущей новую запись можно указать в свойстве Bookmark закладку, ссылка на которую определена в значении свойства LastModified.
Для добавления, изменения или удаления записи необходимо существование уникального индекса для этой записи в базовом источнике данных. В противном случае возникнет ошибка "Разрешение отсутствует" при вызове метода AddNew, Delete или Edit в рабочей области ядра Microsoft Jet или ошибка "Недопустимый аргумент" при вызове метода Update в рабочей области ODBCDirect.

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

Sub AddNewX()

	Dim dbsNorthwind As Database
	Dim rstEmployees As Recordset
	Dim strFirstName As String
	Dim strLastName As String

	Set dbsNorthwind = OpenDatabase("Борей.mdb")
	Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники", dbOpenDynaset)
	' Принимает данные от пользователя.
	strFirstName = Trim(InputBox( "Введите имя:"))
	strLastName = Trim(InputBox( "Введите фамилию:"))
	' Продолжает выполнение, только если пользователь ввел
	' данные для имени и фамилии.
	If strFirstName <> "" and strLastName <> "" Then
		' Вызывает функцию, добавляющую запись.
		AddName rstEmployees, strFirstName, strLastName
		' Отображает добавленные данные.
		With rstEmployees
			Debug.Print "Новая запись: " & !Имя & 	" " & !Фамилия
			' Удаляет новую запись, созданную только для демонстрации.
			.Delete
		End With

	Else
		Debug.Print "Необходимо ввести строки для имени и фамилии!"
	End If
	rstEmployees.Close
	dbsNorthwind.Close

End Sub

Function AddName(rstTemp As Recordset, strFirst As String, strLast As String)
	' Добавляет новую запись в объект Recordset, используя данные,
	' переданные вызывающей процедурой. Затем новая запись
	' делается текущей записью.
	With rstTemp
		.AddNew
		!Имя = strFirst
		!Фамилия = strLast
		.Update
		.Bookmark = .LastModified
	End With

End Function

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