【问题标题】:Microsoft Access Linked Table - Can I use an .accdr file as a backendMicrosoft Access 链接表 - 我可以使用 .accdr 文件作为后端吗
【发布时间】:2015-01-28 04:25:54
【问题描述】:

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

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

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

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

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

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

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

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

谢谢, 达蒙

【问题讨论】:

  • 原来我错误地指定了连接。使用 .accdr 文件作为后端确实有效。

标签: ms-access ms-access-2010 backend linked-tables


【解决方案1】:

原来可以使用 .accdr 作为后端。我想我指定了错误的连接或其他东西。我将此代码 sn-p 与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

【讨论】:

    【解决方案2】:

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

    关于accdr 作为后端问题,那么是的,accdr 是由 Access 的运行时版本打开的。使用标准版本的 Access 打开.accdr 文件会模拟运行时模式。标准版和free Runtime version 之间的唯一区别是您无法从运行时应用程序访问设计工具和标准功能区(您需要create your own)。

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

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

    【讨论】:

    • 谢谢。是的。在这种特殊情况下,前端表包含每个会话的用户变量,我希望每个前端保持独立。如果他们在后端表中,那么并发用户将覆盖彼此的每个会话设置。但是,我需要一种方法来更新这些用户变量的 DEFAULTS,因此需要连接到 ACCDR 作为后端。顺便问一下,你知道ACCDE文件是否也可以用作后端吗?
    • @damon 是的,accde 只是一个预编译代码并删除源代码的数据库(尽管您可以重命名数据库,它的行为方式相同,但源代码不会当然会被删除)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    相关资源
    最近更新 更多