MS Access/ADO AddNew 方法不附加记录

Posted

技术标签:

【中文标题】MS Access/ADO AddNew 方法不附加记录【英文标题】:MS Access/ADO AddNew method not appending record 【发布时间】:2010-01-05 10:09:22 【问题描述】:

我在 MS Access 2003 中使用 ADO 2.1,并使用字段名称数组和值数组调用 ADO 记录集的 AddNew 方法。我没有收到任何错误消息,但是记录没有写入表中。

我尝试使用 .Update 和 .Requery 来执行命令,但无济于事。

有什么想法吗?

Public Function ReadFileViaTextStream(ByVal PortfolioName As String, ByVal SourceFile As String, ByVal TargetTable As String, _
                                                    ByRef TargetFields(), ParamArray SourceFields() As Variant)



Dim p_adoRS As ADODB.Recordset
Dim ForWriting() As Variant

Set p_adoRS = New ADODB.Recordset

p_adoRS.Open TargetTable, CurrentProject.Connection, adOpenDynamic, adLockBatchOptimistic, adCmdTable

If p_adoRS.Supports(adAddNew) Then
    p_adoRS.AddNew TargetFields(), ForWriting()
    p_adoRS.Update
    p_adoRS.Requery
End If

TargetTable 是字符串参数,TargetFields 是字段名称数组,ForWriting 是值数组。

【问题讨论】:

【参考方案1】:

正确 - 我和一位同事发现了问题。记录集应以 adLockOptimistic 而非 adLockBatchOptimistic 的形式打开。

【讨论】:

这很有帮助!就我而言,我没有意识到相反的情况,即 adLockBatchOptimistic 是必需的。使用 adLockOptimistic 可以防止我断开连接的记录集进行批量更新。谢谢。

以上是关于MS Access/ADO AddNew 方法不附加记录的主要内容,如果未能解决你的问题,请参考以下文章

MS Access ADO 记录集和二维数组

Excel VBA 导出到 Access:ADO 错误

Access ADO 中的 GO 语句

Access VBA 中的 AddNew 不添加新行或报告任何错误

在'addnew'开始的交易中,不允许WPF数据网格'newitemplaceholderposition'

数据库录入的SQL语句,into方法应该怎么写?