1,故障现象

本人编译的英文版程序在本机上运行OK,换台电脑运行,发现启动时连接数据库出错。

错误信息如下:

---------------------------

Error start database

---------------------------

database testing error, error description as

Class does not support Automation or does not support expected interface

2,问题分析

https://blog.csdn.net/woolnil/article/details/7980534

https://blog.csdn.net/chaoguodong/article/details/38442527

http://www.bkill.com/download/175356.html

以上文章,特别是最后一篇,指出,

  1. 在Windows 7和早期版本的Windows中,_Connection IID是00000550-0000-0010-8000-00AA006D2EA4。
  2. 在Windows 7 SP1中,_Connection IID是00001550-0000-0010-8000-00AA006D2EA4,并且_Connection_Deprecated的IID是00000550-0000-0010-8000-00AA006D2EA4。
    如果您的应用程序使用_Connection的早期绑定,则在编译期间新的IID将存储在应用程序二进制文件中。当应用程序在下层操作系统上运行时,这会导致错误,因为IID不存在。

一些ADO API在ADO 2.7和更高版本中依赖于平台。在64位版本的Windows上,这些ADO API通过使用64位数据类型(例如LONGLONG数据类型)来处理参数。但是,使用这些API的应用程序仍使用LONG数据类型。因此,当您尝试运行宏时收到“类型不匹配”错误消息。

在本人电脑中查询,结果符合第2条。

在故障电脑中查询,结果符合第1条。

注册项“00001550-0000-0010-8000-00AA006D2EA4”不存在

ADO注册项值为“00000550-0000-0010-8000-00AA006D2EA4”,与win7 SP1不一致。

3,解决方案

https://blog.csdn.net/woolnil/article/details/7980534

上文给出的解决办法有:
1、所有客户端安装KB983246补丁!
2、卸载Win7 的 SP1补丁包
3、替换Win7的C:\Program Files\Common
Files\System\ado下的对应ado组件为XP SP3下的对应文件。

为简单起见,采取方案3.

如上图,在开发环境打开工程,查看引用文件。发现工程使用了ADO2.8控件,文件位于C:\Program Files (x86)\Common Files\System\ado\msado28.tlb

将原来的msado28.tlb改名为msado28-new.tlb

然后将旧版XP的msado28.tlb复制到ado目录。

打开VB开发环境:

è       重新添加一遍ADO控件。作用是更新IID接口。

è       重新编译程序。

注意:Win7的ado文件夹要先设置权限,否则其中的文件无法更改。

4,测试

在本机运行,正常。

在目标电脑运行,正常。

5,总结

本问题牵涉到操作系统版本、SP补丁、KB补丁、32位/64位系统等诸多因素。

编译环境应配置为兼容最低配置,即要兼容目标环境为XP系统、32位、无补丁包。否则,可能出现系统组件的调用故障。

"Class does not support Automation or does not support expected interface"数据库连接错误问题分析与解决的更多相关文章

  1. Attempt to write to field 'android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager' on a null object reference

    E/AndroidRuntime﹕ FATAL EXCEPTION: mainProcess: org.example.magnusluca.drawertestapp, PID: 3624java. ...

  2. 谈谈TensorFlow with CPU support or TensorFlow with GPU support(图文详解)

    不多说,直接上干货! You must choose one of the following types of TensorFlow to install: TensorFlow with CPU ...

  3. import android.support.v4或者import android.support.v7提示导入错误解决办法

    转自:  http://blog.csdn.net/forandever/article/details/37655139 在使用Eclipse开发andriod程序时,程序中提示import and ...

  4. 机器学习技法总结(一):支持向量机(linear support vector machine,dual support vector machine)

    第一阶段技法: large margin (the relationship between large marin and regularization), hard-SVM,soft-SVM,du ...

  5. IIS FTP Server Anonymous Writeable Reinforcement, WEBDAV Anonymous Writeable Reinforcement(undone)

    目录 . 引言 . IIS 6.0 FTP匿名登录.匿名可写加固 . IIS 7.0 FTP匿名登录.匿名可写加固 . IIS >= 7.5 FTP匿名登录.匿名可写加固 . IIS 6.0 A ...

  6. pickle模块的使用python3

    Python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...

  7. Web Automation with Selenium (C#)

    Web Automation is a quite regular task nowadays, scripting for repeated operations and testing. Sele ...

  8. Automation testing tool comparison - UFT & CodedUITest

    Ease of Use - Recording and Playback Functionality UFT provides 4 models to record a new test. Norma ...

  9. Android注解使用之使用Support Annotations注解优化代码

    前言: 前面学习总结了Java注解的使用,博客地址详见Java学习之注解Annotation实现原理,从本质上了解到什么注解,以及注解怎么使用?不要看见使用注解就想到反射会影响性能之类,今天我们就来学 ...

随机推荐

  1. UiPath工具取得网页上面的数据,写入到csv,Outlook邮件发送

    问题描述: 想取得网页上面的股票价格,之后写入到csv文本里面之后添加附件发送邮件. 解决方法: 利用UIPath工具来取得数据,之后写入再发送. 具体步骤: 1.打开网页,之后找到所显示的股票行情的 ...

  2. React学习,搭建项目,入门

    react项目基于node.js.用npm包管理工具; 在cmd命令行中输入: npm install -g create-react-app 等待其安装,意思是全局安装create-react-ap ...

  3. Fiddler之打断点

    1..Fiddler可以修改以下请求 --Fiddler设置断点,可以修改HTTP请求头信息,如修改Cookie,User-Agent等 --可以修改请求数据,突破表单限制,提交任意数字,如充值最小1 ...

  4. (十)EL表达式和JSTL标签快速入门

    目录 什么是 el 表达式 示例:使用EL表达式获取pageContext .request.session.application域中的数据: 示例:使用EL表达式获取Bean属性 获取当前WEB应 ...

  5. 关于 磁盘 I/O 的工作机制那些事

    总有一些你我看不见的东西,存在与你我周围 <深入分析 javaW 技术内幕> 读书感悟 作者 :淮左白衣 写于2018年4月11日19:35:06 写在前面的话 字节与字符的转换桥梁 用户 ...

  6. Python split()方法分割字符串

    Python 中,除了可以使用一些内建函数获取字符串的相关信息外(例如 len() 函数获取字符串长度),字符串类型本身也拥有一些方法供我们使用. 注意,这里所说的方法,指的是字符串类型 str 本身 ...

  7. asp.net core-1.在控制台创建ASP.NET Core应用程序

    创建asp.net core应用程序,需要先把环境安装好,我这边选的是vs2017 第一步先执行dotnet 我执行dotnet --help可以把所有的命令全部列出来: 红框内就是我们可以用来初始化 ...

  8. Java 中的锁原理、锁优化、CAS、AQS 详解!

    来源:jianshu.com/p/e674ee68fd3f 1.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 2.锁实现的基本原理 2.1.volatile Java编程语言允 ...

  9. (十四)角色管理(Ztree插件的基本使用)

    1. 建表 角色表 菜单表 角色-菜单(这个表中的role_id和menuu_id都不能被设置为主键,否则当插入一个新角色的时候,一个角色可能拥有多个菜单(role_id重复),一个菜单可能被多个角色 ...

  10. java 框架-模板引擎FreeMarker

    https://www.cnblogs.com/itdragon/p/7750903.html FreeMarker是一个很值得去学习的模版引擎.它是基于模板文件生成其他文本的通用工具.本章内容通过如 ...