您可以简单地“尝试”并打开相关表格。但是,如果您的连接消失了,那么您会发现一些非常讨厌的影响。首先你得到一个巨大的延迟(坏)。如果您触发了 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
因此,我强烈建议您在使用上述技巧进行测试之前,不要尝试将链接表触摸到服务器。