gpt4 book ai didi

sql-server - 保存记录时出现 MS Access ODBC 超时错误

转载 作者:行者123 更新时间:2023-12-02 17:30:38 25 4
gpt4 key购买 nike

我正在运行 MS Access 2016,通过 ODBC 连接到 SQLServer 2016。我有一个基于链接表的简单表单。当我在表单 View 中显示它,更改一些数据,然后单击下一条记录时,它会更新当前记录并移动到下一条记录,但是当我使用组合框选择要移动到的记录时 - 它会显示记录 I'已选择,如果我更改其上的一些数据 - 它会返回错误 '链接表上的 ODBC 更新失败; 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,它会显示有一个进程 block - 但为什么,任何人都可以帮助我吗?

最佳答案

我们刚刚在带有 SQL 后端的 Access 系统上遇到了类似的问题,该系统似乎随机地经历了间歇性超时,这也被证明是一个组合框问题:

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

该组合似乎已锁定整个 Stock 表并阻止插入/更新/删除。

我们可以始终如一地执行以下操作来说明问题:

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

我们通过创建对 stock 表的 SQL 传递查询并将其用作组合中的记录源来解决此问题,而不是像之前那样在 SQL 数据库中的 Stock 表上使用 Access 链接表。这样做可以阻止表锁定的发生。

关于sql-server - 保存记录时出现 MS Access ODBC 超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46030334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com