Метод AddNew (ADO)
Создает новую запись для обновляемого объекта Recordset .
Синтаксис
recordset.AddNew FieldList, Values
Параметры
Набора записей
Объект Recordset .
FieldList
Необязательный элемент. Одно имя или массив имен или порядковых позиций полей в новой записи.
Значения
Необязательный элемент. Одно значение или массив значений для полей в новой записи. Если Fieldlist является массивом, Значения также должны быть массивом с таким же количеством элементов; В противном случае возникает ошибка. Порядок имен полей должен соответствовать порядку значений полей в каждом массиве.
Комментарии
Используйте метод AddNew для создания и инициализации новой записи. Используйте метод Supports с adAddNew (значение CursorOptionEnum ), чтобы проверить, можно ли добавить записи в текущий объект Recordset .
После вызова метода AddNew новая запись становится текущей и остается текущей после вызова метода Update . Так как новая запись добавляется в набор записей, вызов MoveNext после обновления перемещается за конец набора записей, что делает EOF True. Если объект Recordset не поддерживает закладки, вы не сможете получить доступ к новой записи после перехода на другую запись. В зависимости от типа курсора может потребоваться вызвать метод Requery , чтобы сделать новую запись доступной.
При вызове Метода AddNew при редактировании текущей записи или при добавлении новой записи ADO вызывает метод Update для сохранения изменений, а затем создает новую запись.
Поведение метода AddNew зависит от режима обновления объекта Recordset и от того, передается ли аргументы Fieldlist и Values .
В режиме немедленного обновления (в котором поставщик записывает изменения в базовый источник данных после вызова метода Update ) вызов метода AddNew без аргументов задает для свойства EditMode значение adEditAdd (значение EditModeEnum ). Поставщик кэширует все изменения значений поля локально. Вызов метода Update отправляет новую запись в базу данных и сбрасывает свойство EditMode в adEditNone (значение EditModeEnum ). Если передать аргументы Fieldlist и Values , ADO немедленно отправляет новую запись в базу данных (вызов Update не требуется); Значение свойства EditMode не изменяется (adEditNone).
В режиме пакетного обновления (в котором поставщик кэширует несколько изменений и записывает их в базовый источник данных только при вызове метода UpdateBatch ) метод AddNew без аргументов задает для свойства EditMode значение adEditAdd. Поставщик кэширует все изменения значений поля локально. Вызов метода Update добавляет новую запись в текущий набор записей, но поставщик не публикует изменения в базовой базе данных или не сбрасывает EditMode в adEditNone, пока не вызовет метод UpdateBatch . Если передать аргументы Fieldlist и Values , ADO отправляет новую запись поставщику для хранения в кэше и задает для параметра EditMode значение adEditAdd; Необходимо вызвать метод UpdateBatch , чтобы опубликовать новую запись в базовой базе данных.
Пример
В следующем примере показано, как использовать метод AddNew со списком полей и списком значений, чтобы узнать, как включить список полей и список значений в виде массивов.
create table aa1 (intf int, charf char(10))
insert into aa1 values (2, 'aa')
Dim cn As New adodb.Connection
Dim rs As New adodb.Recordset
Dim cmd As New adodb.Command
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=alexverb2;uid=sa;pwd=foo$bar00;"
cn.Open
rs.Open "select * from xxx..aa1", cn, adOpenKeyset, adLockOptimistic
Dim fieldsArray(1) As Variant
fieldsArray(0) = "intf"
fieldsArray(1) = "charf"
Dim values(1) As Variant
values(0) = 4
values(1) = "as"
rs.AddNew fieldsArray, values
rs.Update
Применение
См. также:
Пример метода AddNew (Visual Basic)
Пример метода AddNew (VBScript)
Пример метода AddNew (Visual C++)
Метод CancelUpdate (ADO)
Свойство EditMode
Метод Requery
Метод Supports
Метод Update
Метод UpdateBatch