Adodc控件的MoveComplete 事件在win7SP1中报错:
引发原因:(摘自Microsoft)
因为有些 ADO 接口更改与新实例标识符 (IIDs) 相关联的 Windows 7 SP1 中,将出现此问题。较旧的 IID 接口被分配以下后缀:
_Deprecated例如,接口 _Connection 已更新,如下所示: 在 Windows 7 和更早版本的 Windows 中,_Connection IID 是 00000550-0000-0010-8000-00AA006D2EA4。 在 Windows 7 SP1 中,_Connection IID 00001550-0000-0010-8000-00AA006D2EA4,并且该 IID 的 _Connection_Deprecated 00000550-0000-0010-8000-00AA006D2EA4。如果您的应用程序使用早期绑定到 _Connection,新 IID 存储在应用程序二进制文件在编译过程中。IID 不存在,因此,在低级别的操作系统上运行应用程序时,这会导致错误。
一些 ADO Api 取决于平台,ado 2.7 及更高版本。在 64 位版本的 Windows 中,这些 ADO Api 处理参数使用 64 位数据类型 (如 LONGLONG 数据类型)。但是,使用这些 Api 的应用程序仍然使用 长 数据类型。因此,当您尝试运行该宏时收到"类型不匹配"错误消息。
解决办法:
对于 32 位计算机
1、下载并安装安装.Net 4.0
2、下载附件压缩包,然后将压缩包内的msado28.tlb文件复制到任一目录中。例如复制到:
C:\Program Files\Common Files\System\ado\msado28 文件夹中
注册该tlb文件(需要使用regtlibv12,故需要安装.Net 4.0)
%windir%\Microsoft.NET\Framework\v4.0.30319\regtlibv12 "C:\Program Files\Common Files\System\ado\msado28\msado28.tlb"
3、验证已创建以下注册表项:
HKEY_CLASSES_ROOT\TypeLib\{0C0FF45D-87C8-4333-9075-3D9B4D64F9FC}\6.0
4、验证以下注册表值
HKEY_CLASSES_ROOT\TypeLib\{0C0FF45D-87C8-4333-9075-3D9B4D64F9FC}\6.0\0\win32
指向C:\Program Files\Common Files\System\ado\msado28\msado28.tlb
5、在VB中引用【Microsoft ActiveX Data Objects 6.0 BackCompat Library】即可
所需附件下载:http://dl.dbank.com/c0n6en3qji
附:Microsoft 官方说明:http://support.microsoft.com/kb/2517589