Una aplicación de ADO no se ejecuta en sistemas operativos de nivel inferior después de compilarlo en un equipo que ejecuta Windows 7 Service Pack 1 o Windows Server 2008 R2 Service Pack 1 o que tenga instalado el KB983246

Ha finalizado el soporte técnico para Windows XP

Microsoft puso fin al soporte técnico para Windows XP el 8 de abril de 2014. Este cambio ha afectado a las actualizaciones de software y las opciones de seguridad. Sepa qué significa esto en su caso y cómo puede mantenerse protegido.

El soporte técnico para Windows Server 2003 finalizó el 14 de julio de 2015

Microsoft finalizó el soporte técnico para Windows Server 2003 el 14 de julio de 2015. Este cambio ha afectado a las actualizaciones de software y las opciones de seguridad. Sepa qué significa esto en su caso y cómo puede mantenerse protegido.

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 2517589
Precaución ADO y ADO MD no se ha probado completamente en un entorno de los.NET Framework Microsoft. Pueden causar problemas intermitentes, especialmente en aplicaciones basadas en servicios o en aplicaciones multiproceso. Las técnicas que se describen en este artículo sólo deben utilizarse como medida temporal durante la migración a ADO.NET. Estas técnicas se deben utilizar sólo después de haber realizado pruebas exhaustivas para asegurarse de que no hay ningún problema de compatibilidad. Los problemas causados por la utilización de ADO o ADO MD de esta manera no son compatibles. Para obtener más información, consulte el artículo siguiente en Microsoft Knowledge Base:
840667 Recibe errores inesperados cuando utiliza ADO y ADO MD en una aplicación de.NET Framework
Síntomas
Considere el siguiente escenario. En un equipo que está ejecutando el Service Pack 1 (SP1) de Windows 7 o Windows Server 2008 R2 Service Pack 1 o que ha instalado KB9823246, vuelva a compilar una aplicación de Microsoft ActiveX Data Objects (ADO) mediante una de las siguientes aplicaciones:
  • Microsoft Visual C++
  • Microsoft Visual Basic para Aplicaciones (VBA)
  • Microsoft Visual Basic 6
  • Aplicaciones de Microsoft. NET
En este escenario, encontrará que la aplicación no se ejecuta en sistemas operativos de nivel inferior. Por ejemplo, no se ejecuta en la versión de lanzamiento de Windows 7 en Windows Vista y en otras versiones anteriores de Windows. Dependiendo de su implementación, también recibirá un mensaje de error similar a uno de los procedimientos siguientes. (Puede recibir otros mensajes de error).

Mensaje de error 1
REGDB_E_CLASSNOTREG (0 X 80040154)
Mensaje de error 2
E_POINTER (0 X 80004003)
Mensaje de error 3
E_NOINTERFACE (0 X 80004002)
Mensaje de error 4
No se puede convertir el objeto COM del tipo 'System.__ComObject' al tipo de interfaz ' ADODB. Conexión '. La operación falló debido a un error de la llamada de QueryInterface en el componente COM para la interfaz con IID '{00001550-0000-0010-8000-00AA006D2EA4}' debido al siguiente error: interfaz No compatible (excepción de HRESULT: 0 x 80004002 (E_NOINTERFACE)). "
Este problema replica en el siguiente segmento de código de Visual C++.
#import " msado15.dll" no_namespace rename("EOF","EndOfFile") int main(){  CoInitialize(NULL);  _ConnectionPtr pConnection = NULL;     HRESULT hr = pConnection.CreateInstance(__uuidof(Connection)); //hr gets E_NOINTERFACE here}
El siguiente de Visual Basic para Aplicaciones de segmento de código replica este problema.
Private Sub Form_Load() Dim Conn As New ADODB.Connection ‘Runtime error here: Class does not support Automation or does not support expected interfaceEnd Sub
Error VBA: Error de tiempo de ejecución '430': clase no admite automatización o no admite la interfaz esperada

Nota: Microsoft ya no admite el ensamblado de interoperabilidad primario para ADO y ya no es compatible con Visual Basic 6. Para obtener más información acerca de la compatibilidad de Visual Basic 6, visite la siguiente página Web MSDN: Para obtener más información sobre el ensamblado de interoperabilidad primario para la compatibilidad de ADO, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
318559 Utilizar el ensamblado de interoperabilidad primario para ADO (ADODB) en Visual Studio.
Causa
Este problema se produce porque se han cambiado algunas interfaces de ADO en Windows 7 SP1 para asociarse con nuevos identificadores de instancia (IID). Las antiguas interfaces IID se asignaron los sufijos siguientes:
_Deprecated
Por ejemplo, la interfaz _Connection se actualizó como sigue:
  • En Windows 7 y versiones anteriores de Windows, el _Connection IID es 00000550-0000-0010-8000-00AA006D2EA4.
  • En Windows 7 SP1, el _Connection IID es 00001550-0000-0010-8000-00AA006D2EA4 y el IID para _Connection_Deprecated es 00000550-0000-0010-8000-00AA006D2EA4.
Si la aplicación utiliza el enlace anticipado para _Connection, el nuevo IID se almacena en binario durante la compilación de la aplicación. Esto provoca un error cuando la aplicación se ejecuta en un sistema operativo de nivel inferior porque no existe el IID.

Algunas API de ADO son dependientes de la plataforma en ADO 2.7 y en versiones posteriores. En versiones de 64 bits de Windows, estas API de ADO procesar argumentos utilizando un tipo de datos de 64 bits (como el tipo de datos largo ). Sin embargo, las aplicaciones que utilizan estas API seguir utilizan el tipo de datos LONG . Por lo tanto, recibirá un mensaje de error "No coinciden los tipos" cuando intenta ejecutar la macro.
Solución
Para resolver este problema, instale las actualizaciones que se describen en el siguiente artículo en Microsoft Knowledge Base:
2640696 Una aplicación de ADO que se compila en Windows 7 SP1 o en Windows Server 2008 R2 SP1 no se ejecuta en las versiones anteriores de Windows
Más información
Una solución mejor para los cambios de Windows 7 SP1 ADO GUID

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 2517589 - Última revisión: 01/02/2016 06:04:00 - Revisión: 9.0

Windows 7 Enterprise, Windows 7 Home Basic, Windows 7 Home Premium, Windows 7 Professional, Windows 7 Starter, Windows 7 Ultimate, Service Pack 3 para Microsoft Windows XP, Microsoft Windows Server 2003 Service Pack 2, Windows Vista Business, Windows Vista Business 64-bit edition, Windows Vista Enterprise, Windows Vista Enterprise 64-bit edition, Windows Vista Home Basic, Windows Vista Home Basic 64-bit edition, Windows Vista Home Premium, Windows Vista Home Premium 64-bit edition, Service Pack 1 para Windows Vista, Windows Vista Service Pack 2, Windows Vista Starter, Windows Vista Ultimate, Windows Vista Ultimate 64-bit edition, Windows Server 2008 Datacenter, Windows Server 2008 Datacenter without Hyper-V, Windows Server 2008 Enterprise, Windows Server 2008 Enterprise without Hyper-V, Windows Server 2008 for Itanium-Based Systems, Windows Server 2008 for Windows Essential Server Solutions, Windows Server 2008 for Windows Essential Server Solutions without Hyper-V, Windows Server 2008 Foundation, Windows Server 2008 Standard, Windows Server 2008 Standard without Hyper-V, Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Datacenter without Hyper-V, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Enterprise without Hyper-V, Windows Server 2008 R2 for Embedded Systems, Windows Server 2008 R2 for Itanium-Based Systems, Windows Server 2008 R2 Foundation, Windows Server 2008 R2 Standard, Windows Server 2008 R2 Standard without Hyper-V

  • kbprb kbsurveynew kbprogramming kbtshoot kbmt KB2517589 KbMtes
Comentarios