首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试以查看ODBC链接表是否可用

测试以查看ODBC链接表是否可用
EN

Stack Overflow用户
提问于 2019-11-21 02:16:14
回答 1查看 103关注 0票数 1

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

我已经搜索了这么多次,但我还是找不到任何东西来回答我的问题。

理想情况下,我希望有一个表格列表,每个表格旁边都有一个绿色/红色的小圆点,显示它是否在线。但我想一个人需要现实一点。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-11-25 08:11:04

您可以简单地“尝试”并打开有问题的表。然而,如果你的连接消失了,那么你会发现一些非常糟糕的影响。首先,你会得到一个巨大的延迟(糟糕的)。如果您触发了ODBC错误,在大多数情况下,您必须退出应用程序。

为了避免上述情况?

事实证明,有一种不同的途径可以获得访问权限,以检查您是否使用了服务器。它不仅消除了可怕的和所有邪恶的ODBC错误,而且还可以更快地启动错误!你会发现“error out”非常快!

其工作方式是使用queryDef检查是否有连接。这会导致access使用“不同”的路径并测试,然后打开一个reocrdset。

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

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

代码语言:javascript
复制
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

现在,假设在我们的代码中,我们有一个链接表。因此,我们可以使用/获取该链接表的连接,并像这样进行测试:

代码语言:javascript
复制
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

因此,我强烈建议您在使用上面的技巧进行测试之前,不要尝试将链接表与服务器连接起来。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58960911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档