HOWTO: Solucionar problemas de "No se encontró el miembro" Error 0x80020003


Resumen


Este artículo describe algunas causas frecuentes del error de automatización OLE - 2147352573 (80020003 hexadecimal) y sugiere pasos para solucionar problemas.


El error puede mostrarse como DISP_E_MEMBERNOTFOUND.

Más información


Causa 1

Se llama IDispatch::Invoke() con wFlags sólo establecer en DISPATCH_METHOD y el identificador dispid identifica una propiedad.


Resolución 1

La documentación del SDK de Win32 para IDispatch::Invoke() indica que si el identificador dispid representa una propiedad, también debe establecer el indicador DISPATCH_PROPERTYGET. Este problema se produce normalmente cuando se utiliza Microsoft Visual C++ para generar los contenedores de clase desde las bibliotecas de tipos de Microsoft Office 95. Tendrá que modificar explícitamente el archivo .cpp generado para cualquier llamada InvokeHelper() que recupera una propiedad para utilizar el indicador DISPATCH_PROPERTGET. Si utiliza las bibliotecas de tipos de Microsoft Office 97, esto se realiza automáticamente por el Asistente de clase de Microsoft Visual C++.


Causa 2

Utiliza el puntero IDispatch incorrecto.

Resolución 2

Esto suele ocurrir cuando utiliza Automatización OLE con las aplicaciones de Microsoft Office 97 o cualquier aplicación que tenga un modelo jerárquico. Puede inicializar una clase COleDispatchDriver, que representa un objeto X, con el puntero IDispatch de un objeto Y. Este error puede o no puede producirse con Microsoft Office 95 u otras aplicaciones con sólo una implementación de IDispatch. Esto es porque el objeto X y objeto Y pudieran ambos se implementan a través de una interfaz IDispatch y, por tanto no se producirá ningún conflicto.

Causa 3

Está utilizando un dispid no válido.

Resolución 3

El servidor no reconoce el identificador de envío especificado en la llamada a IDispatch::Invoke(). Comprobar que se trata el dispid correcto, posiblemente a través de::GetIDsOfNames().

Referencias


Para obtener más información sobre IDispatch o automatización OLE, lea la nota técnica TN039 "Implementación de automatización de MFC/OLE".


Para obtener más información sobre las bibliotecas de tipos y cómo usarlas con Microsoft Visual C++, vea:


Microsoft Win32 Software Development Kit de ayuda; búsqueda en: "bibliotecas de tipos, importar con ClassWizard".



Para obtener información adicional, consulte el artículo siguiente en Microsoft Knowledge Base:


165273 de errores: errores de XL97 usar Automatización OLE