测试ODBC链接表是否可用



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

我做了很多搜索,但都找不到能远程回答我问题的东西。

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

如有任何协助,我们将不胜感激。

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

为了避免上述情况?

事实证明,有一种不同的访问途径可以检查你是否使用了服务器。它不仅消除了可怕的和所有邪恶的ODBC错误,而且错误输出速度更快!你发现"出错"的速度非常快!

它的工作方式是使用queryDef来检查您是否有连接。这会导致访问使用"不同"的路径进行测试,然后打开reocrdset。

因此,这种方法避免了长延迟,也避免了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

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

相关内容

  • 没有找到相关文章

最新更新