丢失的ODBC连接#Name?链接表的格式错误

问题描述 投票:0回答:1

我有一个绑定到Azure SQL表的表单。我们公司的VPN有时会中断,并且ODBC连接丢失。没有错误消息,但是表单的数据消失了,所有文本框都显示#Name?错误。

当文本框显示错误时,有什么方法可以检测到丢失的连接或运行代码?

我一直在玩Form_Error事件,但在这种情况下似乎不会触发。

vba ms-access odbc azure-sql-database adodb
1个回答
0
投票

没有很好的方法来捕获和处理ODBC错误。在大多数情况下,ODBC失败意味着您必须重新启动Access。

但是,最新的“本机”驱动程序应该可以解决此问题,并具有在断开连接时具有重新连接的功能。

这意味着并建议您使用最新的ODBC驱动程序。那是本机17。您可以在这里下载:

https://www.microsoft.com/en-us/download/details.aspx?id=56567

几件事:您必须在每个工作站上安装它。默认情况下,较早的“旧版”驱动程序曾经并且已经安装在Windows的所有副本上。这可以一直追溯到Windows 98SE版本。因此,大多数Access开发人员都使用此默认驱动程序(SQL Server驱动程序)。

并且在您的本地办公室网络(LAN)上,此设置还不错。但是,现在您在Access桌面和后端数据库之间拥有“狂野”的Internet吗?好吧,当然,断开连接甚至很小的中断的可能性非常高。较旧的驱动程序根本无法解决这个问题,或者根本无法解决。

较新的sql server本机驱动程序在这方面要好得多,并且在设计时考虑了Azure。因此,请尝试使用本机17驱动程序。

您将必须使用此新连接重新链接访问表。我强烈建议您在执行此操作时使用FILE dsn,因为这样Access会将DSN转换为无DSN的连接。这将使您可以将前端应用程序分发到任何工作站,而不必在每个工作站上配置或设置DSN。但是,您必须确保在每个工作站上都​​安装了本机驱动程序,因为如上所述,默认情况下不会安装较新的本机驱动程序。并且在您安装访问权限时也不会安装它们。

© www.soinside.com 2019 - 2024. All rights reserved.