ADO的兼容性问题
(创建时间:2011年03月31日 17:24:00)
Jangogo : 

微软在Windows7 Sp1 中更改了 ADO 的接口ID(估计这是微软强迫用户升级到Win7 Sp1的一种方法?)

Windows 7/2008R2 with Sp1
uuid(00001556-0000-0010-8000-00AA006D2EA4),
…. interface _Recordset : Recordset21 {
….
uuid(00001564-0000-0010-8000-00AA006D2EA4),
…. interface Fields : Fields20 {


2008/Vista/XP/2003
uuid(00000556-0000-0010-8000-00AA006D2EA4),
interface _Recordset : Recordset21 {
….
uuid(00000564-0000-0010-8000-00AA006D2EA4),
…. interface Fields : Fields20 {

 

这样意味着Win7 + SP1 下开发编译的ADO数据库驱动相关的应用程序,将不能在以外的系统中运行。会报错:430 不支持期望的接口。

解决方法:

因为微软只更改了IIDS 并没有更改CLSID,因此可以改成 后绑定的模式来创建 ADO对象:

' 以下代码如果在Win7+Sp1 编译,在其他计算机上运行会出错:
dim cn as new ADODB.Connection
'或者
dim cn as ADODB.Connection
set cn=new ADODB.Connection

'=========================================
'采用以下后绑定模式,可以兼容任何版本操作系统
dim cn as object
set cn=createobject("ADODB.Connection")
文档中心