Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 测试ODBC链接表是否可用_Ms Access_Odbc_Linked Tables - Fatal编程技术网

Ms access 测试ODBC链接表是否可用

Ms access 测试ODBC链接表是否可用,ms-access,odbc,linked-tables,Ms Access,Odbc,Linked Tables,我有一个Access数据库,它使用ODBC连接链接到其他SQL数据库中的六个表。然后,我有几个查询在这些表上运行检查,生成一些报告。但是,在运行查询之前,我希望确保所有六个表都是可访问的。所有数据库都是非现场的,我通过VPN连接与它们连接,因此由于连接限制,表可能会脱机几分钟 我做了这么多的搜索,但我找不到哪怕是一点点回答我问题的东西 理想情况下,我希望有一个表格列表,每个表格旁边都有一个小绿/红点,显示它是否在线。但我想我们需要现实一点 任何帮助都将不胜感激。您只需“尝试”并打开相关表格即可。

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

我做了这么多的搜索,但我找不到哪怕是一点点回答我问题的东西

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


任何帮助都将不胜感激。

您只需“尝试”并打开相关表格即可。然而,如果你的联系消失了,那么你会发现一些非常恶劣的影响。首先,你得到了一个巨大的延迟(糟糕)。如果触发ODBC错误,大多数情况下必须退出应用程序

为了避免上述情况

事实证明,有一种不同的途径来获取访问权限,以检查您是否使用了服务器。它不仅消除了可怕的、万恶的ODBC错误,而且可以更快地引导错误!你会发现“出错”的速度非常快

其工作方式是使用queryDef检查是否有连接。这会导致access使用“不同”路径进行测试,然后打开一个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

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

您最好尝试将这些表作为记录集打开,然后查看此操作的结果。您可以创建一个带有表名和绿/红点的表单,并使用OnTimer事件以您认为必要的时间间隔执行该检查。非常感谢。我对Access和ODBC表仍然很陌生。如何“将表作为记录集打开”。我不知道怎么做。