CORRECÇÃO: ADO suprime erros ao obter para tipos de dados Nonvariant

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.

274423
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sintomas
Quando a obtenção de valores do conjunto de linhas para tipos de dados nonvariant, ActiveX Data Objects (ADO) pode suprimir erros relacionados com o estado do conjunto de registos, tais como notificações que o registo está bloqueado por outro utilizador.

Este problema ocorre no Microsoft Data Access Components (MDAC) versão 2.50.4403.12 (Microsoft Windows 2000/MDAC 2.5 RTM) e 2.51.5303.5 (Windows 2000/MDAC 2.5 SP1). Este problema não ocorre na versão do MDAC 2.60.6526.3 (MDAC 2.6 RTM).
Causa
É colocado um caminho de código ligeiramente diferente dependendo se a aplicação está a obter para tipos de dados variante. A utilização de variantes é moldada num contexto interno objecto que tem a capacidade de devolver informações de erro. Nonvariants não têm esta wrapper de contexto e não devolvem informações de erro.
Resolução
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
A versão inglesa desta tem os atributos de ficheiro (ou posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas no formato de universal hora (UTC) coordenada Coordinated. Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
   Date       Version        Size             File name   ----------------------------------------------------------   8/29/2000  2.51.5629.0     20,480 bytes    Msader15.dll   8/29/2000  2.51.5629.0    487,696 bytes    Msado15.dll   8/29/2000  2.51.5629.0    172,304 bytes    Msadomd.dll   8/29/2000  2.51.5629.0     57,616 bytes    Msador15.dll   8/29/2000  2.51.5629.0    184,592 bytes    Msadox.dll   8/29/2000  2.51.5629.0     57,616 bytes    Msadrh15.dll   8/29/2000  2.51.5629.0     94,480 bytes    Msjro.dll				

SOLUÇÃO

Não existe nenhuma solução para este problema.
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.
Mais Informação

Passos para reproduzir o comportamento

  1. Copie o seguinte código num projecto do Visual Basic:

    Nota <username>Tem de alterar o UID <utilizador> valor e o PWD = valor < palavra-passe segura > para os valores correctos antes de executar este código. Certifique-se de que UID tem as permissões adequadas para efectuar esta operação na base de dados.
    Dim cn As ADODB.Connection, cnOtherUser As ADODB.ConnectionDim rs As ADODB.Recordset, rsOtherUser As ADODB.RecordsetDim strConn As String, strSQL As StringDim varData As Variant, intData As IntegerstrConn = "Provider=MSDASQL;Driver={SQL Server};Server=YourServer;Database=Northwind;UID=<user name>;PWD=<strong password>;"strSQL = "SELECT * FROM Customers"Set cnOtherUser = New ADODB.ConnectioncnOtherUser.Open strConnSet rsOtherUser = New ADODB.RecordsetrsOtherUser.Open strSQL, cnOtherUser, adOpenKeyset, adLockPessimistic, adCmdTextrsOtherUser.MoveFirstSet cn = New ADODB.Connectioncn.Open strConncn.CommandTimeout = 10Set rs = New ADODB.Recordsetrs.Open strSQL, cn, adOpenKeyset, adLockPessimistic, adCmdTextIf MsgBox("Use Variant?", vbYesNo) = vbYes Then    On Error Resume Next    varData = rs(0)    If Err.Number <> 0 Then        MsgBox Err.Description        Err.Clear        cn.Errors.Clear    Else        MsgBox "No error!"    End If    On Error GoTo 0Else    On Error Resume Next    intData = rs(0)    If Err.Number <> 0 Then        MsgBox Err.Description        Err.Clear        cn.Errors.Clear    Else        MsgBox "No error!"    End If    On Error GoTo 0End Ifrs.Closecn.ClosersOtherUser.ClosecnOtherUser.Close					
  2. Adicione uma referência para o Microsoft ActiveX Data Objects 2.5 biblioteca.
  3. Execute o código e escolha Sim quando lhe for pedido para utilizar uma variante. Tenha em atenção que um erro "O tempo de espera expirou" é devolvida mensagem indicando que não foi possível obter os registos no período de tempo especificado.
  4. Volte a executar o código e, desta vez seleccione não quando pedido para utilizar uma variante. Desta vez erro é devolvido indicando que não existe nenhum registo actual, mas não existe nenhuma indicação se excedeu o tempo de espera.
Referências
Para obter informações adicionais, clique nos números de artigo existentes abaixo para visualizar os artigos na Microsoft Knowledge Base:
247757CORRECÇÃO: Ligação fuga utilizando o comando com parâmetros de ADO
264442CORRECÇÃO: Conjunto de registos ADO perde a propriedades de filtro quando organizado em Proc.
264701CORRECÇÃO: Transmitir ByRef de conjunto de registos ADO repõe a informação de erro
suprimir ADO suprime variante obtenção erro mensagens de tempo de espera

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 274423 - Última Revisão: 02/24/2014 05:54:33 - Revisão: 2.2

  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbado250fix kbbug kbfix kbmdac250fix kbqfe KB274423 KbMtpt
Esta informação foi útil?