DAO.Recordset2.Edit导致“无法更新;目前锁定“错误。
我想保存已编辑的表单,更新记录并刷新表单。
但是所有保存表单的尝试都无法修复错误。他们无法清除记录锁定。关闭表单会清除锁定,但这很麻烦,寻找更好的方法。
步骤:
将数据输入表单。
点击触发的按钮:
' saves the form but does not clear the record lock
If Me.Dirty Then
Me.Dirty = False
End If
点击另一个触发添加照片的按钮:
Private Sub EndPhotoTaking_Click()
Dim attachmentField As DAO.Field2
Dim photoItemRecordSet As DAO.Recordset2
With [Forms]![Inspection - All sub sections].Form
Set photoItemRecordSet = .Recordset
End With
Set attachmentField = photoItemRecordSet("Photo")
Set photoItemAttachment = attachmentField.Value
'---- error “Could not update; currently locked” on line below
photoItemRecordSet.Edit
然后我收到错误“无法更新;目前锁定“。
我正在使用VBA将图片添加到记录中,但它无法正常工作。如果记录以任何方式更改,它将不起作用。
它正在运行代码行“Me.Dirty = False”,因此这将保存记录。但后来我得到了错误。如果我将数据输入到from中,我只会收到错误。
我输入数据的表单包含子表单,会产生影响吗?我怀疑它确实是因为我有另一个没有子表单的表单,并且它使用相同的代码工作得很好。是否有任何会导致“Me.Dirty = False”无法清除锁定。
我也试过“DoCmd.Save acForm,formName”,但这没有帮助。
该表是sharepoint列表样式。
修改的
答案 0 :(得分:0)
解决方法:关闭表单。更新记录。重新打开表格。
这有效但不太理想。
答案 1 :(得分:0)
使用RecordsetClone
:
Set photoItemRecordSet = .RecordsetClone
photoItemRecordSet.Bookmark = .Bookmark
答案 2 :(得分:0)
我遇到类似的问题,记录已保存,重新查询无济于事。我终于可以将RecordSource的形式设置为原来设置的Recordsource,导航到我所在的记录,然后添加照片就可以了。 我将这段代码放在错误处理程序中;
If Err.Number = 3218 Then
rstEmployee.Close
Set rstEmployee = Nothing
Me.RecordSource = "qryPersonnelData"
Set rstEmployee = db.OpenRecordset(strSQL)
DoCmd.SearchForRecord , "", acFirst, "[ID] = " & thisID
Resume
我希望这对某人有帮助。