是否可以确认是否可以链接到Microsoft Access .accdr文件中的表?
我有一个拆分MS-ACCESS应用程序,其前端位于.accdr文件中,而表格位于服务器上的.accdb文件后端。由于我在下面解释的原因,我需要前端连接到具有.accdr扩展名的第二个后端文件(也在服务器上)中的表。
我发现没有明确说明.accdr文件不允许作为后端数据库的文档,但是,链接表管理器似乎不允许它,并且DoCmd.DatabaseTransfer方法抛出错误。
我的解决方法是暂时将.accdr服务器文件重命名为.accdb,链接到其中的表以更改数据,然后将其重命名为.accdr。但如果我不这样做,我宁愿直接连接。
原因: 为了确保每个客户端都获得前端.accdr的最新更新副本,我创建了一个批处理脚本,在启动之前首先将前端从服务器复制到本地计算机。每次加载应用程序时,它都是一个短时间的惩罚(前端约为8 MB),但批处理脚本确保客户端始终是最新的。 (如果性能成为一个问题,我当然会在下载之前让批处理脚本验证MD5总和,但它还没有出现。)
我没有很多客户端同时连接(只有大约2或3个并发连接),但是他们可以从校园里数以千计的计算机连接,所以我发现这是最简单的方法来确保不无论他们从何处联系,他们都会获得FrontEnd的新副本。
不幸的是,我在前端做了一些本地表,因为它们允许个人用户在会话期间在本地设置参数。现在,当然,我有一个案例,个别用户需要更新这些本地表,以便所有其他用户将获得相同的数据。 (以前,我刚刚根据请求手动进行了这些更改,但是这个用户非常合理地需要自己完成。)
因此,本地前端.accdr文件需要连接到同一前端.accdr文件的服务器副本,以便在表中进行一些数据调整。这就是原因。我知道这很奇怪。
谢谢, 戴蒙
答案 0 :(得分: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
答案 1 :(得分:0)
您可以轻松地将前端本地的表添加到后端。只需将它们从一个复制/粘贴到另一个,从前端删除它们并将它们链接到后端版本。全部5分钟,无需VBA代码。
关于accdr
作为后端问题,然后是,accdr
是由Access的Runtime版本打开的。使用标准版本的Access打开.accdr
文件可模拟运行时模式。标准版本与free Runtime version之间的唯一区别是您无法从运行时应用程序访问设计工具和标准功能区(需要create your own)。
因此,将accdb
文件重命名为accdr
只会告诉访问以运行时模式打开数据库。它根本不会改变数据库本身
因此,您可以使用accdr
文件作为后端而不会出现问题。
专业提示:如果您希望自己的设置可以扩展一点(最多可以容纳50个并发用户)并且具有更好的性能,请从前端到后端打开数据库到虚拟表-结束。这将在前端运行时保持连接打开,并在数据库上保持锁定文件打开,从而产生更好,更可靠的性能。