Метод MS Access/ADO AddNew не добавляет запись

Я использую ADO 2.1 в MS Access 2003 и вызываю метод AddNew набора записей ADO, используя массив имен полей и массив значений. Однако я не получаю сообщений об ошибках, запись не записывается в таблицу.

Я пытался следовать команде с .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 — это массив значений.


person Phil    schedule 05.01.2010    source источник


Ответы (1)


Правильно - Я и коллега нашли проблему. Набор записей следует открывать как adLockOptimistic, а не как adLockBatchOptimistic.

person Phil    schedule 05.01.2010
comment
Это было полезно! В моем случае я не понял обратного, что требуется adLockBatchOptimistic. Использование adLockOptimistic предотвратило пакетное обновление моего отключенного набора записей. Спасибо. - person ErikE; 20.01.2011