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

时间:2015-10-07 00:25:25

标签: ms-access 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
    
  • 点击另一个触发添加照片的按钮:

    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列表样式。

修改

  • 添加额外代码以显示photoItemRecordSet.Edit
  • 的来源
  • 更新了标题和说明。添加了详细信息,表示保存表单不会清除记录锁定。

3 个答案:

答案 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

我希望这对某人有帮助。