程序入口是连接数据库,这里我没有做任何的修改,但最终还是判断是由ADO造成的,查看”Microsoft ActiveX Data Objects 2.8 Library”在Win7 SP1下的路径是“C:\ProgramFiles (x86)\Common Files\System\ado\msado28.tlb”,在Win2003 SP2下的路径是” C:\ProgramFiles\Common Files\System\ADO\msado15.dll”,在Win2003下根本没有msado28.tlb这个文件,我便开始了悲催的百度谷歌之旅,最终有帮助的资料如下:
1、http://topic.csdn.net/u/20110305/09/64d1a776-4bb2-44f7-9f83-d5ae4b1af325.html
通过这篇文章知道了ADO有更新,IID码是不相同的。
2、"类型不匹配"错误消息,当您运行Office 2010 应用程序的 32 位版本中的 VBA 宏http://support.microsoft.com/kb/983246
3、MS11-002:2011 年 1 月 11 日版 MicrosoftData Access Components 2.8 Service Pack 1 安全更新说明
http://support.microsoft.com/kb/2419632
3、An ADO applicationdoes not run on down-level operating systems after you recompile it on acomputer that is running Windows 7 SP 1 or Windows Server 2008 R2 SP 1 or thathas KB983246 installed
http://support.microsoft.com/kb/2517589/en-us
这篇文章中的解决方法是注册Msado60_Backcompat_i386.tlb或Msado60_Backcompat_x64.tlb,因为我的机器是32位,就注册了第二个,然后在引用中选择“Microsoft ActiveX Data Objects 6.0 BackCompat Library”,然后我本机就运行不了。所以这个并不能解决问题。但重要的一个信息是文章标题中的“KB983246”。
4、http://social.msdn.microsoft.com/Forums/zh-CN/accessdev/thread/aec25af5-2c32-4f7e-aac4-7900c46a22fe
5、这篇文章指向“KB983246”http://www.open-open.com/news/view/176e681
最终问题解决办法:
根据以上信息汇总,最终开始搜索“KB983246”这个补丁程序,微软官方站好像没有提供直接下载的链接,在CSDN的资源中发现了这个“解决WIN7SP1下编译的VS6.0程序(ADO2.8)在其它客户端下需无法使用的问题”
http://download.csdn.net/download/chinayokel/3096932
经测试(windows2003 SP2和Widows XPSP3),完美解决,历时三个小时呀,郁闷死了。
在部分计算机安装此补丁时,可能会出现安装失败,最暴力的办法就是到别的机器(未安装SP1的Windows 7)将本机的ADO(C:\Program Files\Common Files\System\ado)整个文件夹都替换掉,然后将程序Debug与Release文件夹全部删除干净,重新编译即可运行。