AddNew 方法 (ADO)
为可更新的 Recordset 对象创建新记录。
语法
recordset.AddNew FieldList, Values
参数
记录集
Recordset 对象。
FieldList
自选。 单个名称或新记录中字段的名称或序号位置的数组。
值
自选。 单个值或新记录中字段的值数组。 如果 Fieldlist 是数组,则 值 也必须是成员数相同的数组;否则,将发生错误。 字段名称的顺序必须与每个数组中的字段值的顺序匹配。
言论
使用 AddNew 方法创建和初始化新记录。 将 Supports 方法与 adAddNew(CursorOptionEnum 值)配合使用,验证是否可以将记录添加到当前 Recordset 对象。
调用 AddNew 方法后,新记录将成为当前记录,并在调用 Update 方法后保持当前状态。 由于新记录追加到 Recordset,因此在更新之后 MoveNext 的调用将超过 Recordset的末尾,使 EOF True。 如果 Recordset 对象不支持书签,则一旦移动到另一条记录,可能无法访问新记录。 根据光标类型,可能需要调用 Requery 方法以使新记录易于访问。
如果在编辑当前记录或添加新记录时调用 AddNew,ADO 将调用 Update 方法以保存任何更改,然后创建新记录。
AddNew 方法的行为取决于 Recordset 对象的更新模式,以及是否传递 Fieldlist 和 Values 参数。
在 立即更新模式(提供程序在调用 Update 方法后将更改写入基础数据源),调用 AddNew 方法,而不使用参数将 EditMode 属性设置为 adEditAdd(EditModeEnum 值)。 提供程序在本地缓存任何字段值更改。 调用 Update 方法会将新记录发布到数据库,并将 EditMode 属性重置为 adEditNone(EditModeEnum 值)。 如果传递 Fieldlist 和 值 参数,则 ADO 会立即将新记录发布到数据库(无需 更新 调用):EditMode 属性值不会更改(adEditNone)。
在 批处理更新模式(提供程序缓存多个更改并将其写入基础数据源时,仅当调用 UpdateBatch 方法时),调用 AddNew 方法而不使用参数将 EditMode 属性设置为 adEditAdd。 提供程序在本地缓存任何字段值更改。 调用 Update 方法会将新记录添加到当前 Recordset,但提供程序不会将更改发布到基础数据库,也不会将 EditMode 重置为 adEditNone,直到调用 UpdateBatch 方法。 如果传递 Fieldlist 和 值 参数,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
适用于
另请参阅
AddNew 方法示例 (VB)
AddNew 方法示例 (VBScript)
AddNew 方法示例 (VC++)
CancelUpdate 方法 (ADO)
EditMode 属性
Requery 方法
支持方法
Update 方法
UpdateBatch 方法