2016-04-04 4 views
0

Я пытаюсь скопировать запись из формы. Мой код позади кнопки выглядит следующим образом:RecordsetClone вызывает ошибку ODBC

With Me.RecordsetClone 
    .AddNew 
     !TableField1 = Me.CorrespondingTextboxName1 
     !TableField2 = Me.CorrespondingTextboxName2 
     … etc for the rest of the fields     
    .Update 
    .Bookmark = .LastModified 
End With 

Проблема заключается в том, когда я добираюсь до .Update линии, я получаю сообщение об ошибке: ODBC Call Failed.

Если я пройду через код, каждое поле, как представляется, будет правильно разрешено, это просто оператор Update, который ему не кажется.

Любые идеи, почему это произойдет и/или как его исправить?

ответ

0

Не совсем ответ, но код в комментариях сосет.

Дополнительную информацию о вызове ODBC Call Failed вы можете получить с помощью библиотеки DBEngine.Errors. Выполните следующий код в обработчик ошибок:

Dim errX As DAO.Error 

For Each errX In Errors 
    Debug.Print errX.Number & ": " & errX.Description 
Next errX 

Edit: когда он работает, вы, вероятно, хотите

Me.Bookmark = .LastModified 
0

Возможно скопировать Id?

Вот проверенная функция копирования записи с нажатием кнопки:

Private Sub btnCopy_Click() 

    Dim rstSource As DAO.Recordset 
    Dim rstInsert As DAO.Recordset 
    Dim fld   As DAO.Field 

    If Me.NewRecord = True Then Exit Sub 

    Set rstInsert = Me.RecordsetClone 
    Set rstSource = rstInsert.Clone 
    With rstSource 
    If .RecordCount > 0 Then 
     ' Go to the current record. 
     .Bookmark = Me.Bookmark 
     With rstInsert 
     .AddNew 
      For Each fld In rstSource.Fields 
      With fld 
       If .Attributes And dbAutoIncrField Then 
       ' Skip Autonumber or GUID field. 
       Else 
       ' Copy field content. 
       rstInsert.Fields(.Name).Value = .Value 
       End If 
      End With 
      Next 
     .Update 
     ' Go to the new record and sync form. 
     .MoveLast 
     Me.Bookmark = .Bookmark 
     .Close 
     End With 
    End If 
    .Close 
    End With 

    Set rstInsert = Nothing 
    Set rstSource = Nothing 

End Sub