1

谁能确认是否可以链接到 Microsoft Access .accdr 文件中的表?

我有一个拆分 MS-ACCESS 应用程序,前端位于 .accdr 文件中,表位于服务器上的 .accdb 文件后端。由于我在下面解释的原因,我需要前端连接到具有 .accdr 扩展名的第二个后端文件(也在服务器上)中的表。

我没有找到明确指出 .accdr 文件不允许作为后端数据库的文档,但是,链接表管理器似乎不允许这样做,并且 DoCmd.DatabaseTransfer 方法会引发错误。

我的解决方法是将 .accdr 服务器文件临时重命名为 .accdb,链接到其中的表以更改数据,然后将其重命名为 .accdr。但如果我不必这样做,我宁愿直接连接。

原因:为了确保每个客户端都能获得最近更新的前端 .accdr 副本,我创建了一个批处理脚本,在启动前首先将前端从服务器复制到本地机器。每次加载应用程序时都会有很短的时间损失(前端大约 8 MB),但批处理脚本确保客户端始终是最新的。(如果性能成为问题,我当然会让批处理脚本在下载之前验证 MD5 总和,但它还没有出现。)

我没有很多客户端同时连接(只有大约 2 或 3 个并发连接),但他们可以从校园内数千台计算机中的任何一台连接,所以我发现这是确保无论他们在哪里的最简单方法连接,他们将获得 FrontEnd 的新副本。

不幸的是,我在前端创建了一些本地表,因为它们允许单个用户在会话期间在本地设置参数。现在,当然,我有一个个人用户需要更新这些本地表的情况,以便所有其他用户都可以获得相同的数据。(以前,我只是根据要求手动进行这些更改,但是这个用户非常合理地需要能够自己做。)

因此,本地前端 .accdr 文件需要连接到同一前端 .accdr 文件的服务器副本,以在表中进行一些数据调整。这就是原因。我知道这很奇怪。

谢谢,达蒙

4

2 回答 2

1

事实证明可以使用 .accdr 作为后端。我想我指定了错误的连接或其他东西。我将此代码片段与strConnect = path_to_mydb.accdr

Public Sub ConnectOutput(dbsTemp As Database, _
strTable As String, strConnect As String, _
strSourceTable As String)

Dim tdfLinked As TableDef

' Create a new TableDef, set its Connect and
' SourceTableName properties based on the passed
' arguments, and append it to the TableDefs collection.
Set tdfLinked = dbsTemp.CreateTableDef(strTable)

tdfLinked.Connect = strConnect
tdfLinked.SourceTableName = strSourceTable
dbsTemp.TableDefs.Append tdfLinked

End Sub
于 2014-11-29T21:29:23.917 回答
0

您可以轻松地将前端本地的表添加到后端。只需将它们从一个复制/粘贴到另一个,从前端删除它们并将它们链接到后端版本。耗时 5 分钟,无需 VBA 代码。

关于accdr作为后端的问题,那么是的,accdr这意味着由 Access 的运行时版本打开。使用标准版本的 Access打开.accdr文件会模拟运行时模式。标准版和免费运行时版本之间的唯一区别是您无法从运行时应用程序访问设计工具和标准功能区(您需要创建自己的)。

因此,将accdb文件重命名为accdr仅告诉访问以运行时模式打开数据库。它根本不会改变数据库本身。
因此,您可以accdr毫无问题地将文件用作后端。

专业提示:如果您希望您的设置稍微扩展(最多 50 个并发用户)并获得更好的性能,请打开一个数据库到从前端到后端的虚拟表。这将在前端运行时保持连接打开,并保持数据库上的锁定文件打开,从而获得更好且更可靠的性能。

于 2014-11-30T06:07:05.563 回答