CORRECÇÃO: Passar ADO Recordset ByRef redefine informações de erro

Traduções deste artigo Traduções deste artigo
ID do artigo: 264701 - 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

Se você passar um conjunto de registros ADO usando um parâmetro de método de ByRef para um objeto de COM fora de processo e o objeto de COM fora de processo gera um erro, as informações deste erro podem não ser corretamente relatadas para o aplicativo cliente.

Causa

Quando um conjunto de registros ADO é controlada fora de processo usando um parâmetro de método de ByRef, código de empacotamento personalizado implementado pelo ADO nos lados o cliente e o servidor está ativado e esse código redefine o objeto de erro OLE pendente que é gerado pelo objeto COM.

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
   Date        Time   Version      Size     File name     Platform
   ---------------------------------------------------------------
   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 
				

Como Contornar

Uma solução alternativa é passar em um recordset ADO usando um parâmetro ByVal e, em seguida, retornar a um recordset ADO usando um valor de retorno.

Situação

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

Mais Informações

Um parâmetro ByRef é um parâmetro de método COM definido pela biblioteca de tipo do objeto COM como um parâmetro [in, out]. No Microsoft Visual Basic, Visual Basic (VB), se você cria um objeto COM e adicionar a palavra-chave ByRef antes de algum parâmetro do método irá configurar esse método para ambos aceitar e retornar uma variável de objeto usando a diretiva [in, out] na biblioteca de tipos do objeto COM.

Esse problema foi reproduzido nos seguintes cenários:
  1. Um servidor do Visual Basic ou Visual C++ COM EXE que ambos aceita um recordset ADO usando ByRef [in, out] e dentro do método chamada gerará um erro.
  2. Um Visual Basic ou Visual C++ COM DLL hospedado no MTS ou COM + que ambas aceita um conjunto de registros ADO ByRef [in, out] e dentro do método chamada gerará um erro.
Nessas situações, o erro real gerado pelo componente COM não é relatado para o cliente; em vez disso, o erro "método ' ~ 'do objeto' ~ ' Falha" é relatado.

Observe que você precisará aplicar esta correção para máquinas cliente e servidor para resolver o problema em casos onde o cliente e servidor COM estão em dois computadores independentes (por exemplo, ao usar o DCOM para um servidor remoto COM).

Propriedades

ID do artigo: 264701 - Última revisão: domingo, 23 de fevereiro de 2014 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft Data Access Components 2.5
Palavras-chave: 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbfix kbmdac250sp2fix KB264701 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: 264701

Submeter comentários

 

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