Ms access 如何修复在编辑表单时使用DAO.Recordset2.Edit导致的“无法更新;当前已锁定”

Ms access 如何修复在编辑表单时使用DAO.Recordset2.Edit导致的“无法更新;当前已锁定”,ms-access,vba,ms-access-2013,Ms Access,Vba,Ms Access 2013,DAO.Recordset2.Edit导致“无法更新;当前已锁定”错误 我想保存已编辑的表单,更新记录并刷新表单 但是所有保存表单的尝试都无法修复错误。他们未能清除记录锁。关闭表单会清除锁,但这很混乱,正在寻找更好的方法 步骤: 将数据输入到表单中 单击一个按钮可触发: ' saves the form but does not clear the record lock If Me.Dirty Then Me.Dirty = False End If 单击另一个触发添加照片的按钮:

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中输入数据时,才会出现错误

我输入数据的表单包含一个子表单,这会有影响吗?我怀疑是这样的,因为我有另一个表单没有子表单,它可以很好地使用相同的代码。是否有任何东西会导致我.Dirty=False无法清除锁

我也尝试过DoCmd.saveacform,formName,但是没有帮助

该表为sharepoint列表样式

编辑

添加了额外代码以显示photoItemRecordSet.Edit的来源 更新了标题和说明。添加了详细信息,说明保存表单并不是清除记录锁。
解决方法:关闭表单。更新记录。重新打开表单

这可以工作,但并不理想。

使用RecordsetClone:


我遇到了一个类似的问题,记录被保存了,重新查询也没有帮助。我终于能够将窗体RecordSource设置为我最初再次设置的RecordSource,导航到我所在的记录,然后添加照片就可以了。 我将此代码放入错误处理程序中

如果错误编号=3218,则 斯坦波耶,关上 设置rstEmployee=Nothing Me.RecordSource=qryPersonnelData 设置rstEmployee=db.OpenRecordsetstrSQL DoCmd.SearchForRecord,acFirst,[ID]=&thisID
简历您是否尝试将我.Dirty=False替换为DoCmd.RunCommand acCmdSaveRecord?我从来没有让自己在代码中改变脏属性。总是有一个错误。但是它应该根据网络来工作。顺便说一句,DoCmd.Save acForm,formName应该保存表单设计,而不是记录集。@asdev yes。由于某些原因,保存记录不会释放锁。可能是在数据库选项或表单属性中配置了锁。表单->记录锁=无锁。。。是的,从头开始重新创建表单看起来是下一步要尝试的事情。什么是ItemRecordSet?不起作用。。。。。没有打开锁。。。。。。我还尝试使用CurrentDb.OpenRecordset创建记录集,但也没有帮助。
Set photoItemRecordSet = .RecordsetClone
photoItemRecordSet.Bookmark = .Bookmark