【问题标题】:How to load databases with linked tables using Microsoft DAO 3.6 object library (dao360)如何使用 Microsoft DAO 3.6 对象库 (dao360) 加载带有链接表的数据库
【发布时间】:2019-08-05 10:49:53
【问题描述】:

我们当前的 MS Access 数据库已达到 2Gb 的限制(请参阅https://support.office.com/en-us/article/access-specifications-0cf3c66f-9cf2-4e32-9568-98c1025bb47c 的一般部分)。此页面建议“链接到其他 Access 数据库中的表。您可以链接到多个数据库文件中的表,每个文件可以大到 2GB。”

我们已经在 MS Access 中进行了设置,并且链接表在 MS Access 中可以正常打开。但是,在我们使用 Microsoft DAO 3.6 对象库 (dao360) 的软件中打开链接表并不愉快。

以这种方式打开链接表有什么特殊要求吗?我已经尝试将两个数据库都添加到工作区(沿着https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/workspace-opendatabase-method-dao 的行),但这似乎没有帮助(或者至少我做得不对)。打开链接表时返回的错误(使用Database.OpenRecordset method 只是“无效操作”。

抱歉我的无知,这个数据库代码在我加入之前已经存在很多年了,直到现在我才不得不接近它!

更新

按照this SOF post,我可以通过将dbOpenDynaset 指定为Database.OpenRecordset 方法(https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/database-openrecordset-method-dao) 的参数来取得一些进展。但是,稍后在调用RecordSet.put_Index 时会失败,并出现错误“此类对象不支持操作”(可能是指动态集)

【问题讨论】:

  • 第一:AFAIK Access,不建议使用单个前端文件打开超过2GB的数据。将数据移动到某个存档是更好的做法。
  • 第二:这是一个编码站点,您应该在这里发布您尝试过的内容,结果是什么,以及它与您想要的有什么不同。尝试在 Access 论坛中发布此问题,例如 thisthis
  • 请发布您的代码。

标签: ms-access


【解决方案1】:

有几点: 如果您使用的是 accDB 格式,那么您不需要,也不需要对 DAO 对象库的引用。它是一个废弃的库,现在你使用的是取代 DAO 库的新 ACE 库。它通常是 100% 兼容的。因此,如果您使用 accDB 格式,则不需要引用 DAO。

DAO 库现已内置到 Access 中。你不使用也不想要外部 DAO 库。

因此,请确保您使用 Access 中的“默认”引用。

Microsoft Access 14.0 对象库

Microsoft Office 14.0 Access 数据库引擎对象。

(当然 14.0 是用于 2010 年的访问 - 对于更高版本,您有不同的数字)。因此,访问 2013 的版本为 15.0。(但是,这些参考通常会为您设置)。

如果您不使用 mdb 格式,则删除 DAO 引用 - 不再需要它。

到那时,你应该很高兴。

对于链接表? 如果您将此代码用于非链接表,那么它将起作用:

Dim rst     As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("tblNames1",dbOpenTable)

注意在上面使用dbOpenTable。无论如何,您真的不需要或不想使用 dbOpenTable。

事实上,你真的应该使用这个:

Dim rst     As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("tblNames1")

但是,如果现在链接表?

那么这将起作用:

Dim rst     As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("tblNames1")

但是,这将失败!!!

Dim rst     As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("tblNames1",dbOpenTable)

因此您不能 FORCE 或将 dbOpenTable 用于链接表。

我想(但不是必需的),为了向您传达 100% 的开发人员意图,您可以将其用于链接表:

Set rst = CurrentDb.OpenRecordset("tblNames1", dbOpenDynaset)

RecordSet.put_Index

这可能而且永远不会奏效。 DAO 记录集没有 put_index 这样的东西。因此,该问题与链接表的问题 100% 不同。

DAO reocrdset 对象没有 put_Index 方法或属性,因此无论您尝试做什么,该语法都是错误的,并且从未得到支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-09
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多