Comment faire : Résoudre les problèmes de « Membre non trouvé » erreur de 0x80020003


Résumé


Cet article décrit certaines causes courantes de l’erreur OLE Automation - 2147352573 (80020003 hex) et proposé des étapes de dépannage.


L’erreur peut être indiqué comme DISP_E_MEMBERNOTFOUND.

Plus d'informations


Cause 1

Vous appelez IDispatch ::Invoke() avec wFlags définir uniquement à DISPATCH_METHOD et le dispid identifie une propriété.


Résolution 1

La documentation du SDK Win32 pour IDispatch ::Invoke() stipule que si le dispid représente une propriété, vous devez également définir l’indicateur DISPATCH_PROPERTYGET. Ce problème se produit généralement lorsque vous utilisez Microsoft Visual C++ pour générer des wrappers de classe à partir de bibliothèques de types de Microsoft Office 95. Vous devez modifier explicitement le fichier .cpp générés pour tout appel InvokeHelper() qui Récupère une propriété pour utiliser l’indicateur DISPATCH_PROPERTGET. Si vous utilisez les bibliothèques de types de Microsoft Office 97, cela est fait automatiquement par l’Assistant de classe Microsoft Visual C++.


Cause 2

Vous utilisez le pointeur IDispatch incorrect.

Résolution 2

Cela se produit généralement lorsque vous utilisez OLE Automation avec les applications Microsoft Office 97 ou toute application qui dispose d’un modèle objet hiérarchique. Peut avoir initialisé une classe COleDispatchDriver, qui représente un objet X, avec le pointeur IDispatch d’un objet Y. Cette erreur peut ou ne peut pas se produire avec Microsoft Office 95 ou d’autres applications avec une seule implémentation de IDispatch. C’est parce que l’objet X et objet Y peuvent être implémentés via une seule interface IDispatch et donc aucun conflit ne se produira.

Cause 3

Vous utilisez un dispid non valide.

Résolution 3

Le serveur ne reconnaît pas le dispid que vous avez spécifié dans l’appel d’IDispatch ::Invoke(). Vérifiez que c’est le dispid correct, éventuellement par le biais de ::GetIdsOfNames().

Références


Pour plus d’informations sur IDispatch ou OLE Automation, lecture de Tech note TN039 « Implémentation de l’Automation MFC/OLE ».


Pour plus d’informations sur les bibliothèques de types et de leur utilisation avec Microsoft Visual C++, consultez :


Aide du Kit de développement logiciel Microsoft Win32 ; recherche de : « bibliothèques de types, importer avec ClassWizard ».



Pour plus d’informations, consultez l’article suivant dans la Base de connaissances Microsoft :


165273 bogue : XL97 les erreurs à l’aide de OLE Automation