AddNew 方法 (ADO)

为可更新的 Recordset 对象创建新记录

语法

  
recordset.AddNew FieldList, Values  

参数

recordset
一个 Recordset 对象。

字段列表
可选。 单个名称,或新记录中字段的名称或序号位置数组。


可选。 单个值,或新记录中字段的值数组。 如果 Fieldlist 是数组,则 Values 也必须是具有相同成员数的数组;否则,会发生错误。 字段名称的顺序必须与每个数组中的字段值的顺序相匹配。

备注

使用 AddNew 方法创建和初始化新记录。 使用带有 adAddNew(一个 CursorOptionEnum 值)的 Supports 方法来验证你是否可以将记录添加到当前 Recordset 对象。

调用 AddNew 方法后,新记录将成为当前记录,并在调用 Update 方法后保持最新状态。 由于新记录追加到 Recordset,Update 后对 MoveNext 的调用将移过 Recordset 的末尾,使 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 方法会将新记录添加到当前 Recordset,但在你调用 UpdateBatch 方法之前,提供程序不会将更改发布到基础数据库,或将 EditMode 属性重置为 adEditNone。 如果传递 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=<password>;"  
  
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  

应用于

记录集对象 (ADO)

另请参阅

AddNew 方法示例 (VB)
AddNew 方法示例 (VBScript)
AddNew 方法示例 (VC++)
CancelUpdate 方法 (ADO)
EditMode 属性
Requery 方法
Supports 方法
Update 方法
UpdateBatch 方法