急急急··VC下ADO编程问题

努力学习_提高自己 2012-02-22 07:52:26
使用ADO读写本地的Access文件。
在开发机上一切正常,功能完全没问题。
拷贝到同事机器上运行就不行,加了一个MessageBox,发现在CreateInstance的时候失败了。

先到网上找找啊,发现不少人遇到这个问题,按照各种提供的解决办法:
import的路径-----检查过了,没问题
初始化COM的函数,两种都用了,也没问题,甚至有人说初始化函数要放在CApp的初始化前,我都试了··

然后是连接名"ADODB.Connection" 和__uuidof(Connection)我也都试了,还是失败··

通过注册表查看了版本,都是2.81,也没问题

我直接把dll放在程序目录下导入的,拷贝也一起拷过去了都失败··

从获取到的HRESULT里获取信息,发现是“不支持此接口”

疯了···
这是为何啊··所有的工作都做好了啊
...全文
120 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhanze 2012-02-23
  • 打赏
  • 举报
回复
C:\Program Files\Common Files\System\ado\msado15.dll
系统文件目录 把这个文件用开发机上的替换掉
哈哈 虽然是重复楼上各位的回答 过来支持下
我以前也遇到过这种问题 然后把这个文件做到软件安装包中
客户安装软件的时候 就自动的把文件覆盖了
试试
hdg3707 2012-02-23
  • 打赏
  • 举报
回复
是不是目标机的驱少相应的驱动,装同版本的OFFICE时要选完全安装,可能是OFFICE少装什么了或相应的驱动版本不一致
  • 打赏
  • 举报
回复
测试了四台目标机:

其中两台没有开发环境,没有装access,dll版本为2.81.1132.0--结果:失败

一台有开发环境,没有装access,dll版本为2.81.3012.0----结果:失败

一台没有开发环境,装了access,dll版本为2.81.3012.0----结果失败

真心伤了····为啥啊
  • 打赏
  • 举报
回复
刚才确认了一下,发现我的注册表里的version是2.81.1132.0
但是我的系统目录下的msado15.dll的版本却是2.81.3012.0,不明白为什么版本不一致。

可是为什么我把我的dll带过去也不行呢?
我在我的程序里使用
#import "msado15.dll" no_namespace  rename("EOF","adoEOF") rename("BOF","adoBOF")

导入库,测试的时候,把我的dll就放在程序目录下一起拷贝过去的
  • 打赏
  • 举报
回复
感谢各位的回复,回楼上诸位:
1、目标机和开发机都是xp
2、查看注册表,MDAC版本都是2.81.1132.0
3、使用默认路径,就是系统盘下的dll,还有把开发机的dll拷贝过去的办法都试过了,都是不行

sichuanwww 2012-02-23
  • 打赏
  • 举报
回复
xp和win7下的msado15.dll版本是不同的。
ystemni 2012-02-23
  • 打赏
  • 举报
回复
xp和win7下的msado15.dll版本是不同的。
向立天 2012-02-23
  • 打赏
  • 举报
回复
把你的msado15.dll带过去
  • 打赏
  • 举报
回复
的确是版本问题,我发现就算程序里导入的时候是程序目录下,拷贝到目标机时将本地的dll带过去也是没用的。
要么在目标机上将开发机的dll注册一下,或者直接拷贝覆盖掉目标机上的dll,这样就可以用了。

谢谢大家的帮忙了。
oyljerry 2012-02-22
  • 打赏
  • 举报
回复
目标机器上的ADO是否注册成功,控件可能有问题,重新注册一下OCX等
  • 打赏
  • 举报
回复
可能是msado15.dll不一致
zyq5945 2012-02-22
  • 打赏
  • 举报
回复

把C:\Program Files\Common Files\System\ado\msado15.dll的DLL替换掉,再用regsvr32 注册下。
shn521 2012-02-22
  • 打赏
  • 举报
回复
用release版本呢?

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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