Метод Recordset2.AddNew (DAO)
Область применения: Access 2013, Office 2013
Создает новую запись для обновляемого объекта Recordset2 .
Синтаксис
expression .AddNew
Выражение Переменная, представляющая объект Recordset2 .
Замечания
Используйте метод AddNew , чтобы создать и добавить новую запись в объект Recordset2 с именем recordset. Этот метод задает для полей значения по умолчанию, а если значения по умолчанию не указаны, он задает для полей значение NULL (значения по умолчанию, заданные для recordset2 табличного типа).
После изменения новой записи используйте метод Update , чтобы сохранить изменения и добавить запись в Recordset2. В базу данных не будут внесены никакие изменения, пока вы не вызовете метод Update.
Примечание.
Если вызвать метод AddNew, а затем выполнить какую-либо операцию, переходящую к другой записи, но без использования метода Update, то изменения будут потеряны без предупреждения. Кроме того, если закрыть Recordset2 или завершить процедуру, объявляющую Recordset2 или его объект Database , новая запись будет удалена без предупреждения.
Примечание.
Если вы используете метод AddNew в рабочей области Microsoft Access, а ядру СУБД нужно создать новую страницу для хранения текущей записи, то используется пессимистическая блокировка страницы. Если новую запись можно разместить на имеющейся странице, то используется оптимистическая блокировка.
Если вы еще не перешли к последней записи recordset2, записи, добавленные в базовые таблицы другими процессами, могут быть включены, если они расположены за пределами текущей записи. Однако при добавлении записи в собственный набор Записей 2 запись отображается в recordset2 и включается в базовую таблицу, где она становится видимой для всех новых объектов Recordset2 .
Позиция новой записи зависит от типа Recordset2:
В объекте Recordset2 типа dynaset записи вставляются в конце набора записей независимо от правил сортировки или упорядочения, действовавших при открытии набора записей .
В объекте Recordset2 табличного типа, для которого задано свойство Index , записи возвращаются в правильном месте в порядке сортировки. Если свойство Index не задано, новые записи возвращаются в конце объекта Recordset.
Запись, которая была текущей до использования метода AddNew, остается текущей. Если вам нужно сделать новую запись текущей, вы можете указать в свойстве Bookmark закладку, определяемую значением свойства LastModified.
Примечание.
Чтобы запись можно было добавить, изменить или удалить, в базовом источнике данных должен быть указан ее уникальный индекс. Если это не так, при вызове метода AddNew, Delete или Edit возникнет ошибка "Отказано в разрешении" в рабочей области Microsoft Access.
Пример
В этом примере используется метод AddNew, чтобы создать запись с указанным именем. Функция AddName необходима для запуска этой процедуры.
Sub AddNewX()
Dim dbsNorthwind As Database
Dim rstEmployees As Recordset2
Dim strFirstName As String
Dim strLastName As String
Set dbsNorthwind = OpenDatabase("Northwind.mdb")
Set rstEmployees = _
dbsNorthwind.OpenRecordset("Employees", dbOpenDynaset)
' Get data from the user.
strFirstName = Trim(InputBox( _
"Enter first name:"))
strLastName = Trim(InputBox( _
"Enter last name:"))
' Proceed only if the user actually entered something
' for both the first and last names.
If strFirstName <> "" and strLastName <> "" Then
' Call the function that adds the record.
AddName rstEmployees, strFirstName, strLastName
' Show the newly added data.
With rstEmployees
Debug.Print "New record: " & !FirstName & _
" " & !LastName
' Delete new record because this is a demonstration.
.Delete
End With
Else
Debug.Print _
"You must input a string for first and last name!"
End If
rstEmployees.Close
dbsNorthwind.Close
End Sub
Function AddName(rstTemp As Recordset2, _
strFirst As String, strLast As String)
' Adds a new record to a recordset using the data passed
' by the calling procedure. The new record is then made
' the current record.
With rstTemp
.AddNew
!FirstName = strFirst
!LastName = strLast
.Update
.Bookmark = .LastModified
End With
End Function