【问题标题】:MS Access locks record after data entry in Memo field在备注字段中输入数据后 MS Access 锁定记录
【发布时间】:2016-06-09 18:03:34
【问题描述】:

我有一个 MS Access 2010 应用程序。当我转到一个表单并将数据输入到备忘录字段中时,我会在单击按钮时在 VBA 中运行以下查询。当前记录是唯一正在编辑的记录,并且数据库中没有其他用户。

但是,我收到由于记录锁定冲突而无法更新记录的错误。 我有时也会收到数据已更改的错误,我应该重新编辑记录。以下是我收到的每个错误的文本。

由于类型转换失败,表单 DV 没有更新 0 个字段,由于键违规导致 0 条记录,由于锁违规导致 1 条记录...

数据已更改。 在您尝试保存更改之前,另一个用户编辑了此记录并保存了更改。 重新编辑记录。

有谁知道我该如何解决这个问题或为什么会这样?

Private Sub Save_Status_Complete_Button_Click()

Str_SQL_Update = "UPDATE [dbo_Tape_Capture_Local_tbl] SET header_general_comments_status = 1 WHERE [Loan Identifier] = '" & Me.Loan_ID_Combo & "';"
DoCmd.RunSQL Str_SQL_Update

End Sub

【问题讨论】:

  • 您的表单/备忘录字段是否绑定到表格?
  • 嗨克里斯托弗,是的。备注字段绑定到表格。
  • 抱歉,澄清一下:它是否绑定到您正在执行 UPDATE 的表?如果是这样,那就是写冲突的来源。在绑定控件中,您正在直接更改绑定表中的记录,甚至在您单击按钮之前。所以当按钮被点击时,表格已经被锁定,因为你已经在编辑它了。
  • 在执行UPDATE之前保存表单的当前记录。
  • @HansUp 似乎如果它是一个绑定控件,那么这两件事是一样的,对吧?如果记录被保存,那么运行update 也没有任何意义。

标签: ms-access vba


【解决方案1】:

在运行查询之前添加Me.Dirty = False。这将保存表单的当前记录。

【讨论】:

  • 谢谢,这行得通。在我进行任何进一步更改之前,必须保存当前表单,否则 Access 会认为另一个用户在未保存的情况下编辑了记录。我也在运行 Str_SQL_Update 后添加了这一行。
猜你喜欢
  • 2016-06-04
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多