CORRECÇÃO: Transmitir ByRef de conjunto de registos ADO repõe a informação de erro

Traduções de Artigos Traduções de Artigos
Artigo: 264701 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Sintomas

Se passar um conjunto de registos ADO utilizando um parâmetro de método ByRef para um objecto do COM fora de processo e o objecto do COM fora de processo gera um erro, estas informações de erro poderão não ser comunicadas correctamente à aplicação cliente.

Causa

Quando um conjunto de registos ADO é organizada fora do processo utilizando um parâmetro do método de ByRef, código marshalling personalizado implementado pelo ADO nos lados o cliente e o servidor está activado e este código repõe o objecto de erro OLE pendente que é gerado pelo objecto COM.

Resolução

Este problema foi corrigido no service packs mais recentes para o Windows 2000 e MDAC 2.5.
  • Para resolver este problema, obtenha o service pack mais recente do Windows 2000. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    260910Como obter o Service Pack mais recente do Windows 2000
  • Para resolver este problema, obtenha o service pack mais recente do Microsoft Data Access Components 2.5. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    293312INFO: Como obter o mais recente 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 é passar de um conjunto de registos ADO utilizando um parâmetro ByVal e, em seguida, devolver um conjunto de registos ADO utilizando um valor de retorno.

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo. Este problema foi corrigido pela primeira vez no Microsoft Data Access Components 2.5 Service Pack 2 e Microsoft Windows 2000 Service Pack 2.

Mais Informação

Um parâmetro ByRef é um parâmetro de método COM definido pela biblioteca de tipos de objectos COM como um parâmetro [in, out]. No Microsoft Visual Basic (VB), se criar um objecto COM e adicionar a palavra-chave ByRef antes de alguns parâmetros de método, Visual Basic configurará este método para ambos aceitar e voltar uma variável de objecto utilizando a directiva [in, out] na biblioteca de tipo do objecto COM.

Este problema foi reproduzido em seguintes cenários:
  1. Um servidor do Visual Basic ou Visual C++ COM EXE que ambos aceita um conjunto de registos ADO utilizando ByRef [in, out] e dentro do método chamada desencadeia um erro.
  2. Um Visual Basic ou Visual C++ COM DLL hospedado no MTS ou COM + que ambos aceita um conjunto de registos ADO ByRef [in, out] e dentro do método chamada desencadeia um erro.
Nestas situações, o erro real desencadeado pelo componente COM não é reportado ao cliente; em vez disso, o erro "o método ' ~ 'do objecto' ~ ' falhou" é comunicado.

Note que terá de aplicar esta correcção para o cliente e o servidor de computadores para resolver o problema em casos onde estão cliente e servidor do COM em dois computadores independentes (por exemplo, quando utilizar o DCOM para um servidor COM).

Propriedades

Artigo: 264701 - Última revisão: 24 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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