2010-01-05 58 views
1

我在MS Access 2003中使用ADO 2.1并使用字段名称和值数组调用ADO记录集的AddNew方法。但是,我没有收到错误消息,该记录没有写入表格。MS Access/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是一个值数组。

回答

3

对 - 我自己和一位同事发现了这个问题。记录集应该打开为adLockOptimistic,而不是adLockBatchOptimistic。

+0

W3Schools可以帮助:http://www.w3schools.com/ado/prop_rs_locktype.asp – Fionnuala 2010-01-05 12:10:50

+0

这是有帮助的!在我的情况下,我没有意识到相反的情况,adLockBatchOptimistic是必需的。使用adLockOptimistic可以防止我的断开连接的记录集进行批量更新。谢谢。 – ErikE 2011-01-20 18:21:32