测试看看ODBC链接表是否可用

我有一个access数据库,该数据库使用ODBC连接链接到其他SQL数据库中的六个表。然后,我有几个查询在这些表上运行检查以生成一些报告。但是,在运行查询之前,我想确保所有六个表都可以访问。所有数据库都在异地,并且我通过VPN连接连接到它们,因此,由于连接限制,表确实可能离线了几分钟。

我进行了很多次搜索,但是找不到远距离可以回答我问题的东西。

理想情况下,我想在每个表旁边有一个带有绿色/红色小点的表格列表,以表明该表格是否在线。但我想一个需要现实。

任何帮助将不胜感激。

sunshengxia 回答:测试看看ODBC链接表是否可用

您可以简单地“尝试”并打开有问题的表。但是,如果连接断开,则会发现一些非常讨厌的效果。首先,您会遇到严重的延迟(严重)。而且,如果您触发ODBC错误,则在大多数情况下,您必须退出应用程序。

要避免上述情况?

事实证明,可以通过另一种途径来检查是否使用了服务器。它不仅消除了可怕的和所有邪恶的ODBC错误,而且还消除了更快启动的错误!您发现“错误输出”非常快!

此方法的工作方式是使用queryDef检查是否有连接。这将导致访问使用“不同”路径并进行测试,然后打开记录集。

因此,这种方法避免了长时间的延迟,也避免了ODBC错误。

您可以使用此例程进行测试:

Function TestLogon(strCon As String) As Boolean

  On Error GoTo TestError

  Dim dbs          As DAO.Database
  Dim qdf          As DAO.QueryDef

  Set dbs = CurrentDb()
  Set qdf = dbs.CreateQueryDef("")

   qdf.Connect = strCon
   qdf.ReturnsRecords = False

   'Any VALID SQL statement that runs on server will work below.

   qdf.SQL = "SELECT 1"

   qdf.Execute

   TestLogon = True

   Exit Function

TestError:
   TestLogon = False
   Exit Function

End Function

现在,在我们的代码中说,我们有一个链接表。因此,我们可以使用/抓取该链接表的连接,并进行如下测试:

Sub MyCoolUpdate()

  Dim strCon     As String

  Dim rstHotels  As DAO.Recordset

  strCon = CurrentDb.TableDefs("dbo_tblHotels").Connect

  If TestLogon(strCon) = True Then

     ' it is safe to open the linked table,'eg:
     Set rstHotels = CurrentDb.OpenRecordset("dbo_tblHotels",dbOpenDynaset,dbSeeChanges)

     ' we are conneced - do your stuff
     ' walk the dog - do updates

     rstHotels.Close

  End If

End Sub

因此,我强烈建议您在尝试使用上述技巧进行测试之前,不要尝试触摸服务器的链接表。

本文链接:https://www.f2er.com/3063348.html

大家都在问