【问题标题】:"ActiveX component can't create object" in Access 2000 VBA appAccess 2000 VBA 应用程序中的“ActiveX 组件无法创建对象”
【发布时间】:2011-04-28 14:33:56
【问题描述】:

我有一个 VBA 应用程序在尝试运行时抛出“ActiveX 组件无法创建对象”异常。

断点设置在抛出异常的那一行:

我假设它与 Me.Recordset (我是访问表单)有关。记录集可能与引用的 Microsoft DAO 库有关。以下是当前参考:

该应用程序在 Windows 98 机器上运行,并且 Access .mdb 据称之前运行良好(没有人记得它最初在哪台计算机上或它的配置。表单本身只是滚动浏览数据记录(有效很好),但是当触发上面的 Calc_Confidence_Level() 子例程时,它会在记录集上抛出一个错误,我认为这与它正在滚动的错误相同。

有人知道这里出了什么问题吗?即使直接推动正确的方式以便能够更好地调试它也会很棒,因为我并不经常使用 VBA/Access。

谢谢!


更新 1

我查看了“C:\Program Files\Common Files\microsoft shared\DAO\”,根本看不到 .dll,只有 .tlb 文件。里面应该有.dll吧?

【问题讨论】:

  • 您是否确保所有引用的组件都已使用 regsvr32.exe 正确注册?
  • Me.Recordset 是什么数据类型?将光标放在Recordset(有断点的那一行)上,右键,转到定义看看它是如何声明的。
  • @shahkalpesh:转到定义给出“光标下的标识符无法识别”。 O_O
  • @0xA3:检查我的更新。它已注册,但缺少实际的 .dll。现在我只需要找到我可以得到那个 .dll 的地方。也许它在 Access 安装盘上或可下载。
  • @David:它目前在 Access 2000 中运行,但我不确定它最初是在哪个版本的 Access 中创建的。

标签: ms-access vba recordset


【解决方案1】:

如果 (1) 您的表单中有一个活动记录集,然后 (2) 您的记录集是 ADODB 记录集还是 DAO 记录集,您应该明确。通常,当表单以标准方式打开时(使用“记录源”属性引用本地\链接表或视图),记录集是 DAO 类型。在这些情况下,您需要 DAO 库。如果表单没有“记录源”属性,则没有记录集,或者必须“动态”设置,例如在“打开”事件中。然后,您必须检查 proc 中声明的记录集类型。 ('findfirst' 是一种 DAO 方法,不能与 ADODB 记录集一起使用)

另一件事可能是确保表单没有损坏:打开一个新的\空数据库,从您的活动数据库中导入所有对象,然后对其进行测试。

【讨论】:

    【解决方案2】:

    您需要参考“Microsoft DAO x.x 对象库”。您只引用了 DAO 兼容性库。

    【讨论】:

    • 我添加了 Microsoft DAO 3.51 对象库而不是兼容性库,但得到了同样的错误。如果我尝试同时添加两者,我会遇到命名冲突,因此我必须使用其中一个,但两者都给出相同的结果。
    猜你喜欢
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2010-12-25
    • 2018-01-22
    相关资源
    最近更新 更多