VB6 中的 ADODB.Connection - 打开方法失败并出现运行时错误“2147221164 (80040154)”

Posted

技术标签:

【中文标题】VB6 中的 ADODB.Connection - 打开方法失败并出现运行时错误“2147221164 (80040154)”【英文标题】:ADODB.Connection in VB6 - Open Method fails with Runtime Error '2147221164 (80040154)' 【发布时间】:2016-07-25 14:14:41 【问题描述】:

这是我正在从事的项目中开始发生的事情,到目前为止我无法找出根本原因。

这在我这边没有任何改变就停止了工作,自从我上次从事该项目以来,我所知道的唯一变化是磁盘发生故障(曾经是安装了一些应用程序的 E: 驱动器)。 操作系统是 Windows Server 2003。

下面的错误:

Runtime Error

我要添加到项目中的库如下:

Visual Basic 应用程序 Visual Basic 运行时对象和过程 Visual Basic 对象和过程 OLE 自动化 Microsoft CDO for Windows 2000 库 Microsoft 脚本运行时 Windows 脚本宿主对象模型 Microsoft 数据绑定集合 VB6 (SP4) Microsoft ActiveX 数据对象 2.8 库

对象oConn的声明和实例化方式如下:

    Dim oConn AS ADODB.Connection 设置 oConn = 新 ADODB.Connection

在 VB 项目中没有引用被标记为 MISSING。

我也尝试了后期绑定,但没有成功。我尝试使用regsrv32.exe重新注册msado15.dll,但没有任何乐趣。

我真的不知道这里,我认为由于磁盘故障导致某些依赖项不再满足,但鉴于IDE提供的一些细节,我不知道如何调查。

谢谢

【问题讨论】:

您是否重新创建了 UDL?该错误表明它仍在寻找 E:。 嗨,吉姆。 E:驱动器现在再次存在,我从头开始重新创建磁盘,并将旧引用(以及我检查的 UDL 有效并连接)放在那里。我认为缺少的是曾经安装在那里的一些软件可能满足一些嵌套引用。 单击“调试”按钮时您会看到什么?我想知道这是否可能是 MDAC 问题。 吉姆·休伊特。我认为你在正确的轨道上。就在昨天,我一直在互联网上搜索这个,我发现了一个名为 ComponentChecker 的 Microsoft 工具,它应该检查 MDAC 是否损坏。该工具将安装的版本报告为 UNKNOWN,几乎可以肯定,这是库中的损坏。该工具为我提供了一些不是预期版本的 DLL 的名称,因此我将尝试从工作机器上复制它们。但我不确定这是否是正确的路径。 你也可以下载here 【参考方案1】:

这个问题没有简单的答案。我发现并且在@Jim Hewitt 的评论中也提出了建议,即 Windows Server 2003 上的 MDAC 已损坏。组件检查器实际上无法识别 MDAC 的版本,它是该版本 Windows 中的嵌入式组件。 因此,总而言之,整个 Windows 安装已损坏(不知道这是如何发生的),并且 Visual Basic 6 无法正常工作。解决方案是设置另一台机器。

【讨论】:

以上是关于VB6 中的 ADODB.Connection - 打开方法失败并出现运行时错误“2147221164 (80040154)”的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的COM Adodb.Connection - 绝对存在的字段上的未知字段名称

ADODB.Connection 未定义

正确使用CurrentProject.Connection进行ADODB.Connection?

VBA - ADODB.Connection - 使用参数和检索受影响的记录数

调用 `ADODB.connection.open` 时检查用户的权限

PHP ODBC 创建数据库 返回 ADODB.Connection 错误 '800a0e7a'