有网友问到这个问题,他在代码里创建了一个ADODB.Recordset 对象,然后Open,当他想调用AddNew 方法时,程序报错误代码3251“对象或提供者不能执行所需的操作” 。
这个问题在微软的支持网站已经有专文说明:
You cannot add records or delete records with the ADO AddNew method or with the Delete method
重现错误的代码如下:
Dim rec As New ADODB.Recordset
rec.Open "select * from sampletable", CurrentProject.Connection, adOpenKeyset
rec.AddNew
rec!Fieldname1=newvalue1
rec!Fieldname2=newvalue2
......
rec.Update
执行如上代码,就会收到如下错误信息:
Run-time error '3251': Object or provider is not capable of performing requested operation.
这是因为,在默认情况下(即Open 方法中省略LockType 参数),ADO recordset 打开后的LockType 成员变量值是 adLockReadOnly,不允许添加或删除记录。如果想添加或删除记录,打开 recordset 时将 LockType 设为 adLockOptimistic 或 adLockP