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

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.

264701
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
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).

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 264701 - Última Revisão: 02/24/2014 05:53:14 - Revisão: 2.1

  • Microsoft Data Access Components 2.5
  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbfix kbmdac250sp2fix KB264701 KbMtpt
Esta informação foi útil?