CORRECTIF : Le passage du jeu d'enregistrements ADO ByRef réinitialise les informations d'erreur

Ancien nº de publication de cet article : F264701
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Symptômes
Si vous passez un jeu d'enregistrements ADO en utilisant un paramètre de méthode ByRef vers un objet COM hors processus et que cet objet COM hors processus génère une erreur, cette information d'erreur peut ne pas être signalée correctement à l'application client.
Cause
Lorsqu'un jeu d'enregistrements ADO est mis en ordre hors processus à l'aide d'un paramètre de méthode ByRef, le code de mise en ordre personnalisé implémenté par ADO côté client et côté serveur est activé. Ce code réinitialise l'objet erreur OLE en attente généré par l'objet COM.
Résolution
Ce problème a été résolu dans les derniers Service packs pour Windows 2000 et MDAC 2.5.
  • Pour résoudre ce problème, procurez-vous le dernier service pack de Windows 2000. Pour plus d'informations, consultez l'article suivant dans la Base de connaissances de Microsoft :
    260910 Obtention du dernier Service Pack de Windows 2000
  • Ce problème a été corrigé une première fois dans Microsoft Data Access Components 2.5 Service Pack 2 et Microsoft Windows 2000 Service Pack 2.
   Date        Heure  Version      Taille   Nom de fichier  Plate-forme   --------------------------------------------------------------------   06/09/2000  13:02  2.50.5408.0  327,952  Msadce.dll      x86    06/09/2000  12:46  2.50.5408.0  487,696  Msado15.dll     x86 
Contournement
Pour contourner ce problème, passez un jeu d'enregistrements ADO en utilisant le paramètre ByVal, puis retournez un jeu d'enregistrements ADO en utilisant une valeur de retour.
Statut
Pour résoudre ce problème, procurez-vous le dernier Service Pack pour Microsoft Data Access Components 2.5. Pour plus d'informations, consultez l'article suivant dans la Base de connaissances Microsoft :
293312 INFO : Obtention du dernier Service Pack de MDAC 2.5
Ce problème a été corrigé une première fois dans Microsoft Data Access Components 2.5 Service Pack 2 et Microsoft Windows 2000 Service Pack 2.
Plus d'informations
Un paramètre ByRef est un paramètre de méthode COM défini par la bibliothèque de types de l'objet COM en tant que paramètre [in,out]. Dans Microsoft Visual Basic (VB), si vous créez un objet COM et que vous ajoutez le mot clé ByRef avant un paramètre de méthode, Visual Basic configure cette méthode pour accepter et retourner une variable objet en utilisant la directive [in,out] dans la bibliothèque de types de l'objet COM.

Ce problème a été reproduit dans les scénarios suivants :
  1. Un serveur EXE COM Visual Basic ou Visual C++ COM EXE qui, à la fois, accepte un jeu d'enregistrements ADO utilisant ByRef [in,out] et qui émet une erreur à l'intérieur même de l'appel de méthode.
  2. Un serveur DLL COM Visual Basic ou Visual C++ COM EXE hébergé dans MTS ou COM+ qui, à la fois, accepte un jeu d'enregistrements ADO utilisant ByRef [in,out] et qui émet une erreur à l'intérieur même de l'appel de méthode.
Dans ces situations, l'erreur émise par le composant COM n'est pas signalée au client ; l'erreur " La méthode '~' de l'objet '~' a échoué " est renvoyée à la place.

Notez que vous devez appliquer ce correctif aux ordinateurs clients et aux ordinateurs serveurs afin de résoudre le problème dans les cas où le client et le serveur COM se trouvent sur deux ordinateurs distincts (par exemple en cas d'utilisation de DCOM sur un serveur COM distant).
Propriétés

ID d'article : 264701 - Dernière mise à jour : 02/23/2014 22:14:19 - Révision : 2.0

  • Microsoft Data Access Components 2.5
  • kbnosurvey kbarchive kbbug kbfix kbmdac250sp2fix kbqfe kbgrpdsmdac kbado kbhotfixserver KB264701
Commentaires