CORRECÇÃO: Conjunto de registros ADO perde propriedade filtro ao empacotada-PROC.

Traduções deste artigo Traduções deste artigo
ID do artigo: 264442 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Sintomas

Quando você passar um Recordset do ADO desconectado entre dois objetos COM no aplicativo COM + mesmo, determinadas propriedades estendidas do Recordset como a propriedade filtro são perdidas. Em uma configuração semelhante em um pacote do Microsoft Transaction Server (MTS) no Microsoft Windows NT 4.0, as propriedades estendidas não são perdidas.

Causa

+ Agora executa-processo de empacotamento ao passar um Recordset ADO entre dois objetos COM. Ao realizar marshaling em processo, ADO cria o equivalente de um clone do conjunto de registros , em vez de empacotamento existente ADO Recordset ponteiro de interface. Isso provoca uma perda de propriedades estendidas como a propriedade filtro . A mesma perda de propriedades estendidas ocorre quando você cria um clone de um Recordset do ADO ou quando você passar uma desconectado ADO Recordset fora de processo, mas esses casos específicos são por design.

Resolução

Esse problema é corrigido no service packs mais recentes para o Windows 2000 e MDAC 2.5.
  • Para resolver esse problema, obtenha o service pack mais recente para o Windows 2000. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    260910Como obter o Service Pack mais recente do Windows 2000
  • Para resolver esse problema, obtenha o service pack mais recente para o Microsoft Data Access Components 2.5. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    293312INFO: Como obter o último MDAC 2.5 Service Pack
A versão em inglês dessa correção deve ter os seguintes atributos de arquivo ou posteriores:
   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 
				

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo. Esse problema foi primeiro corrigido no Microsoft Data Access Components (MDAC) 2.5 Service Pack 2, o MDAC versão 2.6 e o Microsoft Windows 2000 Service Pack 2.

Mais Informações

No COM +, quando um objeto, como um Recordset ADO é passado entre dois objetos COM no mesmo aplicativo do COM +, o objeto é controlado em andamento em vez de apenas passado como um ponteiro de interface sem empacotamento. Isso ocorre no COM + mesmo se os objetos de COM chamador e receptor estão no mesmo processo, thread e COM compartimento. Quando o COM + tentar empacotar um objeto entre dois objetos COM, ele consulta para uma interface IMarshal do objeto passado. Se o objeto passado retorna uma interface IMarshal , COM + usa essa interface para empacotar o objeto em processo chamando IMarshal::MarshalInterface usando o sinalizador MSHCTX_INPROC.

Antes para aplicar esse hotfix, um Recordset do ADO desconectado implementa-processo de empacotamento criando o equivalente de um clone do conjunto de registros , que não copia todos os o Recordset estendido propriedades como filtro . Portanto, se você passar um Recordset ADO entre dois objetos COM em COM +, as propriedades estendidas como filtro serão perdidas.

Depois de aplicar o hotfix, o ADO executa-processo de empacotamento usando o empacotador de thread livre (FTM) que é equivalente ao passar um ponteiro de interface para o objeto original do chamador para o receptor. Usando o FTM, ADO pode com eficiência empacotar um Recordset do ADO dentro + e manter todas as propriedades estendidas.

Observe que, se você passar um conectado ADO Recordset que tenha sua propriedade CursorLocation definida como adUseServer , este Recordset não perder propriedades estendidas se passado entre dois objetos COM em um aplicativo do COM +.

Propriedades

ID do artigo: 264442 - Última revisão: domingo, 20 de outubro de 2013 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft ActiveX Data Objects 2.5
Palavras-chave: 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbado260fix kbbug kbfix kbmdac250sp2fix KB264442 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 264442

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