万恶的“类不支持自动化或不支持期望的接口”问题,欢迎探讨!

yxr_2008 2012-05-11 10:02:55
我的一个应用程序中引用了ADO对象,编译后在本机(简称电脑A)运行正常,但是在其他多台电脑上(统称电脑B)运行时出现“类不支持自动化或不支持期望的接口”错误,我已经在百度、谷歌了一大通,找到的答案无外乎是电脑A与电脑B的数据库版本与环境不同,通过在电脑A或者电脑B上更新MDAC什么的来解决,但我的问题奇怪之处在于:
1、电脑A与电脑B的ADO版本都是2.8,而且msado15.dll的版本都是2.81.3012.0;
2、电脑A与电脑B的系统都是WinXP SP3,都安装了VB6 SP6,在电脑A上编译后,在本机可以运行,到电脑B上运行出错;但是在电脑B上编译后,在电脑B与电脑A上运行都不会出错。

所以我分析,我的问题应该与ADO版本没有什么关系,请朋友们帮我分析一下会是什么原因造成的,非常感谢!!!
...全文
2333 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
proer9988 2012-05-11
  • 打赏
  • 举报
回复
XP是不同版本的GHOST版的吧?

yxr_2008 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
很早以前我也遇到过,因为对象的缺省属性没有写,比如rs(FieldName).Value 只写rs(FieldName),我想,应该是注册表问题,系统重装后,问题不再出现
[/Quote]

谢谢!这个回复对我很有启发,我也一直怀疑我这个具体问题是由于连接字符串等这类细节问题引起的,上班后我到出问题的电脑上试试看。
worldy 2012-05-11
  • 打赏
  • 举报
回复
很早以前我也遇到过,因为对象的缺省属性没有写,比如rs(FieldName).Value 只写rs(FieldName),我想,应该是注册表问题,系统重装后,问题不再出现
yxr_2008 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
这个东西是由于MS万恶的dll注册机制带来的
具体说一下:
VB这个玩意在生成exe后要有一系列dll才能确保正确运行,这就是VB程序必须打包才能运行的原因。这些dll来源不同(有的是MS系统的,也有MS的软件运行环境带的,还有第三方的包括字自己写的一些dll,而且在你使用电脑安装软件、打补丁的时候dll悄悄的升级)这就有问题了,dll冲突,也叫 DLL hell。

具体表现:类不支持自……
[/Quote]

感谢回复!
我这个程序没有制作安装包,因为电脑A和电脑B都安装了VB6,所以我是在一台电脑上编译后,直接拿exe程序到另一台电脑运行的。而且ADO这个东西好像也不好打包。

咸清 2012-05-11
  • 打赏
  • 举报
回复
这个东西是由于MS万恶的dll注册机制带来的
具体说一下:
VB这个玩意在生成exe后要有一系列dll才能确保正确运行,这就是VB程序必须打包才能运行的原因。这些dll来源不同(有的是MS系统的,也有MS的软件运行环境带的,还有第三方的包括字自己写的一些dll,而且在你使用电脑安装软件、打补丁的时候dll悄悄的升级)这就有问题了,dll冲突,也叫 DLL hell。

具体表现:类不支持自动化或不支持期望的接口等错误。
具体解决方案:更新安装包中相应的dll为最新,或者打包时使用最新的系统运行环境。

------------------------------------
以前经常被这个问题害得去现场,很气愤MS为什么不彻底解决,但是据说这个问题要等到Windows消失。
yxr_2008 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
* MDAC 的版本

* Microsoft Excel 的版本(如果使用了 Excel 的自动化)

......

要看你的程序做了什么。
[/Quote]


我查看了一下,电脑A和电脑B对ADO对象的引用都是“Microsoft ActiveX Data Objects 2.8 Library”,也都是msado15.dll这个文件,而这个文件的版本都是2.81.3012.0,文件大小也是一样的。这是不是说明两台电脑的MDAC版本是一致的呢?如果不是的话,MDAC这个东东的版本要从哪里查看呢?

另外,我的这个应用程序也确实引用了Excel对象,但应该不是这个造成的,因为我试验过,在电脑A上编译引用Excel而不引用ADO的程序,到电脑B上是可以正常运行的。

我在连接数据库时用的字符串是"Provider=microsoft.jet.oledb.4.0;data source=......;persist security info=false",问题会不会是出在这里呢?
yxr_2008 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
XP是不同版本的GHOST版的吧?
[/Quote]

XP的确是不同版本的GHOST版,但是这个应该不是主因。否则,在不同版本的GHOST版XP上就会出错,VB程序的通用性肯定不会这么差。
of123 2012-05-11
  • 打赏
  • 举报
回复
* MDAC 的版本

* Microsoft Excel 的版本(如果使用了 Excel 的自动化)

......

要看你的程序做了什么。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧