MS访问保存记录上的ODBC超时错误



我正在运行MS Access 2016通过ODBC连接到SQLServer2016。我有一个基于链接表的简单表单。当我以表单视图显示它,更改一些数据,然后单击以获取下一个记录时,它会更新当前记录并移至下一个记录,但是当我使用组合框选择要移动的记录时 - 它显示记录i've选择,如果我更改了一些数据 - 它返回错误 'odbc -update在链接表上失败; Microsoft ODBC SQL Server驱动程序查询超时过期(#0)'

我尝试了下面的2种不同的方法,由2个不同组合框的代码

Private Sub cboFindRecord_AfterUpdate()
Dim rst As DAO.Recordset
    Set rst = Me.RecordsetClone
    rst.FindFirst "Id=" & Nz(Me.cboFindRecord, 0)
    If Not rst.EOF Then
        Me.Bookmark = rst.Bookmark
    End If
    rst.Close
    Set rst = Nothing
End Sub

Private Sub FindRecord2_AfterUpdate()
    Me.txtId.Enabled = True
    Me.txtId.Locked = False
    Me.txtId.SetFocus
    If IsNull(Me.FindRecord2) Then
        Exit Sub
    End If
    DoCmd.FindRecord Me.FindRecord2, acEntire, , acSearchAll, , acCurrent
End Sub

(我在此数据库中的其他形式上有此代码,它们可以使用,但是对于此表,对于此表来说,它没有)

桌子上有500个记录,它似乎是一个阻止问题,而不是超时问题。如果我在SQL Server上运行SP_WHO2,则显示有一个过程块 - 但是为什么有人可以帮助我?

我们刚刚与SQL后端的访问系统遇到了类似的问题,SQL后端似乎是随机的,这也是一个组合框问题:

我们继承了此系统,原始开发人员将使用一个组合框来查找IDS文本等效物,然后从标签中引用该组合框。这意味着,例如,在销售行形式上,有一个隐藏的组合包含整个库存表,只是为了获取库存项目的名称。

该组合似乎一直在锁定整个库存表并防止插入/更新/删除。

我们可以始终如一地做以下内容来说明问题:

  • 在系统的一个副本上打开销售线 - 该销售线的组合可以从库存表中查找数据
  • 在系统的另一份副本中打开库存项目
  • 编辑并保存该库存项目
  • 当时显示库存项目挂起的系统
  • 然后关闭第一副本上的销售线
  • 似乎在库存表上释放锁定,因为库存项目将立即保存第二副本

我们通过创建SQL通过查询到库存表并将其用作组合中的记录源,而不是像以前一样在SQL数据库中的库存表上使用访问链接。这样做阻止了表锁定。

您已经注意到,使用记录选择器时,表单/表关系可以正常工作,然后整个内容都归结为组合框。我要做的第一件事就是简单地从头开始创建一个新的。当您这样做时 - 确保密钥字段是第一列,并成为ComboBox的界值。这是它想要固有设置的方式 - 但请确保是这种情况。

最新更新