当前位置:编程学习 > VB >>

VB程序打包在别的机子运行提示运行时错误430:类不支持自动化或不支持期望接口

我在winxp sp3+vb6写了一个程序访问access 2003,本地运行都没有问题,用setup factory打包到别的机子运行就出现“运行时错误430:类不支持自动化或不支持期望接口”,应该怎么解决啊?

Dim con As ADODB.Connection     
Dim rst As ADODB.Recordset          
Set con = New ADODB.Connection
Set rst = New ADODB.Recordset
      
    con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\xishu.mdb;Persist Security Info=False"
    rst.ActiveConnection = con
    
    rst.Open "select * from leixing where id=" & idp --------------------编程问答-------------------- 引用的某个部件没有正确注册!
但是似乎不是ADODB没有注册,因为ADODB在XP中是自带的;

--------------------编程问答-------------------- 我装的VB6 SP6,引用的是Microsoft   ActiveX   Data   Objects   2.8   Library,在其他XP上运行就报这个错,实在是不明白什么原因啊,很多解释都说要装MDAC,但是XP上不是已经自带了么? --------------------编程问答-------------------- XP自带了 MDACTyp2.8,你要安装也安装不了!
你的问题应该是别控件或者引用没有注册。 --------------------编程问答-------------------- 我只用到数据库访问的Microsoft ActiveX Data Objects 2.8 Library,其他的都没用 --------------------编程问答-------------------- 遇到了同样的问题。 --------------------编程问答--------------------
引用 4 楼 alrock 的回复:
我只用到数据库访问的Microsoft ActiveX Data Objects 2.8 Library,其他的都没用


那你XP系统应该有问题咯,这个部件是XP自带的(sp1好像没有带)将xp升级到sp3试试吧 --------------------编程问答-------------------- 我之前也碰到这个问题,查了不少资料,都解决不了,最终知道是VB编译下的XP版本有问题,现在网络上的GHOST版本,有些就会出错,后来我换了个版本重新安装,一切都好,你可以朝这个方向试试,现在下载个系统也不用多少时间 --------------------编程问答--------------------
引用 7 楼 yejian520 的回复:
我之前也碰到这个问题,查了不少资料,都解决不了,最终知道是VB编译下的XP版本有问题,现在网络上的GHOST版本,有些就会出错,后来我换了个版本重新安装,一切都好,你可以朝这个方向试试,现在下载个系统也不用多少时间

真的没别的办法了么?我原来的系统编译的都好好的,重装系统是网上下载的“雨林木风”的GHOST安装的,就出现了这个问题。真麻烦。 --------------------编程问答-------------------- C:\Program Files\Common Files\System\ado  里面的文件版本问题  我一般吧自己的机器上这个文件夹用低版本的 --------------------编程问答-------------------- 开发的机器上用老版本的编译 这样就能用了 --------------------编程问答-------------------- Dim con As Object
Dim rst As Object
Set con = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
    
  con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\xishu.mdb;Persist Security Info=False"
  rst.ActiveConnection = con
    
  rst.Open "select * from leixing where id=" & idp
...
rst.Close
con.close

set rst=nothing
set con=nothing
'**********************************
主要原因还是因为两台机子上的ADO接口的问题,只有用后期绑定才能解决问题,
据说是微软强制编程者改用Win7,因为Win7下ADO的接口与XP下ADO的接口不一致造成
的,起始我发现就算是在XP下,只要你安装了VS2010sp1,在编译到未安装的机子上去运行
一样还是不行,所以究其原因可能还是ado版本造成的接口改变,没办法,只能用后期绑定 --------------------编程问答-------------------- 要是win7 的sp1,就把那个糟心的sp1 拿下

另外试试看2.6或者2.7版本的adodb --------------------编程问答-------------------- 在报错的机子上安装KB983246补丁 --------------------编程问答-------------------- Microsoft ActiveX Data Objects 2.8 Library
换用2.7的!同样问题,我就是这么解决的 --------------------编程问答--------------------
引用 12 楼 clear_zero 的回复:
要是win7 的sp1,就把那个糟心的sp1 拿下

另外试试看2.6或者2.7版本的adodb


刚开始只要不安装sp1就可以,现在即使不安装sp1,还会有其他补丁影响到,所以干脆还是在xp下编译算了 --------------------编程问答-------------------- 不同的机器编译确实有时会表现不同的。 同一份源码在我自己机器编译在qq上发文件结果对方提示360说病毒。在公司的机器上编译的就不会报毒。 --------------------编程问答-------------------- 你说具体点啊 啊 --------------------编程问答-------------------- 今儿打包的程序也在xp sp2上遇到改问题了,开发的平台的win7 sp1。 --------------------编程问答--------------------
引用 13 楼  的回复:
在报错的机子上安装KB983246补丁


不打这个补丁之前,主程序能运行,但有局部报错,专门打了sp3和这个补丁后,程序已启动就报错(automation 错误),更悲催。 --------------------编程问答-------------------- 用Windows Virtual PC模拟了一个xp sp3环境,在里面安装了VB6 sp6,把win7下编译的form全部移植过去,重新编译并打包,自己运行无问题,但打包程序在另外的xp+sp3或win2003 sp2上有只要用到adodb语句就报430错误,先后换了2.0~2.8不同版本的msado.tlb打包过去安装问题依旧,我要崩溃了,哪位出出主意啊!!! --------------------编程问答-------------------- C:\Program Files\Common Files\System\ado 
这个文件夹里面的问题 

我在出现那个问题的电脑里把这个文件夹里的东西覆盖掉我开发的机器上的文件 

再次编译 即可解决问题 

开发机器上的ADO版本低一点 其它的就无所谓了 --------------------编程问答-------------------- 靠 原来这个问题我已经回答过了    快半年了 还没结贴 --------------------编程问答-------------------- 我用WIN7 编译后到别的机器上运行也是同样问题。
把工程放到别的装了VB6的机器上重新编译才正常。 --------------------编程问答-------------------- 我也碰到这个问题,不是控件注册问题,是ADO版本问题
1. 在部分xp下报错;
2. 在win7和visit下不能用;

是这么解决的,
1. 使用低版本的ADO2.5版本
2. 在C:\Program Files\Common Files\System\ado  文件夹下和C:\WINDOWS\system32 文件夹下有ADO文件,
   msado25.tlb,版本号2.81.3012.0,大小80KB。
   打包的时候用这个就可以。 --------------------编程问答-------------------- 我也曾遇到过这个问题.可以是操作系统的原因,我把源代码放到其另外一台XP电脑上重新生成EXE就解决了。这个问题应该解决了吧,这么长时间了。不过我还是想和大家分享下。 --------------------编程问答-------------------- 我也遇到同样问题,用21楼的方法,解决了问题。感谢!! --------------------编程问答-------------------- 让大家参考下我的解决方法吧:
1.装VB
2.上源码
3.生成EXE
4.打开这个EXE运行正常了
感觉我的方法比较2,但绝对解决问题 --------------------编程问答--------------------
为了版本兼容的问题,我以前都是在 Win98 下打包的(用 VB 自带的打包工具)。

现在的机器不能安装 Win98 了,就在本地打包后,将原来在 Win98 下打包的 Support 文件夹下的旧版本系统文件覆盖新生成的 Support 下的同名文件,然后运行 Support 下 <安装文件名>.BAT 文件重新生成压缩包。
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,