我试图从表单中复制记录。按钮后面的代码如下所示:
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
。
如果我单步执行代码,每个字段似乎都可以正确解析,它只是它似乎不喜欢的更新语句。
为什么会发生这种情况和/或如何纠正它?
答案 0 :(得分:0)
不是答案,但评论中的代码很糟糕。
您可以获得有关" ODBC呼叫失败"的更多信息。使用DBEngine.Errors集合。在错误处理程序中运行以下代码:
Dim errX As DAO.Error
For Each errX In Errors
Debug.Print errX.Number & ": " & errX.Description
Next errX
编辑:当它工作时,你可能想要
Me.Bookmark = .LastModified
答案 1 :(得分: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
答案 2 :(得分:0)
对于发现此线程的任何人,我使用的方法与张贴者相似,并且收到相同的错误。原来,我违反了SQL Server表上的索引。确保检查并确保没有违反任何索引,约束等。