CORRECTIF : Jeu d'enregistrements ADO perd la propriété de filtre lorsqu'en ordre en cours

Traductions disponibles Traductions disponibles
Numéro d'article: 264442 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Symptômes

Lorsque vous passez un déconnecté ADO Recordset entre deux objets COM dans la même application COM +, certaines propriétés étendues du jeu d'enregistrements telles que la propriété de filtre sont perdues. Sous une configuration similaire dans un Package Microsoft Transaction Server (MTS) sur Microsoft Windows NT 4.0, les propriétés étendues ne sont pas perdues.

Cause

COM + effectue maintenant dans le processus de marshaling lors du passage d'un objet Recordset ADO entre deux objets COM. Lorsque vous effectuez dans le processus de marshaling, ADO crée l'équivalent d'un clone du jeu d'enregistrements, plutôt que de marshaling existant ADO Recordset pointeur d'interface. Cela provoque une perte de propriétés étendues telles que la propriété Filter. La perte de propriétés étendues même se produit lorsque vous créez un clone d'un objet Recordset ADO ou lorsque vous passez un déconnecté ADO Recordset out-of-process, mais ces cas particuliers sont par conception.

Résolution

Ce problème est 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 pour Windows 2000. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
    260910Comment faire pour obtenir le dernier Service Pack de Windows 2000
  • Pour résoudre ce problème, procurez-vous le dernier service pack Microsoft Data Access Components 2.5. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
    293312Procédure d'information : Pour obtenir le dernier MDAC 2.5 Service Pack
La version anglaise de ce correctif doit avoir les attributs de fichier suivants ou ceux d'une version ultérieure :
   Date         Time    Version       Size      File name    Platform
   ------------------------------------------------------------------
   05/23/2000   22:22   2.51.5629.0   327,952   Msadce.dll   x86 
   05/23/2000   22:19   2.51.5629.0   487,696   Msado15.dll  x86 
				

Statut

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés au début de cet article. Ce problème a été le premier corrigé dans Microsoft Data Access Components (MDAC) version 2.5 Service Pack 2, MDAC version 2.6 et Microsoft Windows 2000 Service Pack 2.

Plus d'informations

COM +, lorsqu'un objet tel qu'un objet Recordset ADO est passé entre deux objets COM dans la même application COM +, l'objet est maintenue en ordre en cours plutôt que simplement passé comme un pointeur d'interface sans marshaling. Cela se produit dans COM + même si les objets COM et l'appelant sont dans le même processus, un thread et un apartment (cloisonné) COM. Lorsque COM + tente de marshaler un objet entre deux objets COM, une requête pour une interface IMarshal à partir de l'objet passé. Si l'objet passé retourne une interface IMarshal, COM + utilise cette interface pour marshaler l'objet en cours en appelant IMarshal::MarshalInterface à l'aide de l'indicateur MSHCTX_INPROC.

Avant de pouvoir appliquer ce correctif, un déconnecté ADO Recordset met en ?uvre dans le processus de marshaling en créant l'équivalent d'un clone de l' objet Recordset, ce qui ne copie pas tous le Recordset étendue des propriétés telles que le filtre. Par conséquent, si vous passez un objet Recordset ADO entre deux objets COM dans COM +, les propriétés étendues telles que filtre sont perdues.

Après avoir appliqué le correctif, ADO exécute dans le processus de marshaling à l'aide de la Free Threaded Marshaler (FTM), qui est équivalent à en passant un pointeur d'interface à l'objet d'origine à partir de l'appelant à appelé. À l'aide le FTM, ADO peut efficacement marshaler un Recordset ADO à l'intérieur de COM + et conserver toutes les propriétés étendues.

Notez que si vous passez un ADO connectés RecordsetCursorLocation propriété a la valeur de la valeur adUseServer, cet objet Recordset ne perd pas les propriétés étendues s'il est transmis entre deux objets COM dans une application COM +.

Propriétés

Numéro d'article: 264442 - Dernière mise à jour: jeudi 30 janvier 2014 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ActiveX Data Objects 2.5
Mots-clés : 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbado260fix kbbug kbfix kbmdac250sp2fix KB264442 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 264442
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com