Entrar

CORRECÇÃO: Driver Microsoft ODBC para Oracle não é bem-sucedida no cursor de cliente com colchete incorporado

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.

292604
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Quando você usa um cursor ao lado do cliente contra um Oracle banco de dados com o Driver Microsoft ODBC para Oracle, uma atualização adiada não é bem-sucedido e você recebe a seguinte mensagem de erro:
0 x 80004005 ("tabela de base insuficiente informações para atualização")
Isso ocorre quando a instrução SQL SELECT inclui uma cláusula WHERE que tem um colchete incorporado. O problema ocorre apenas com um cursor do lado do cliente quando o critério na cláusula WHERE do conjunto de registros é colocada entre parênteses e os critérios de seqüência de caracteres contendo colchetes.
Causa
O ActiveX Data Objects (ADO) Client Cursor Engine não analisa a instrução com êxito e não é possível atualizar o conjunto de registros.
Resolução
Para resolver esse problema, obtenha o service pack mais recente para o Microsoft MDAC 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 apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
   Date         Version       Size     File name     Platform   ----------------------------------------------------------------   03-07-2001   2.53.7307     327,952  Msadce.dll    x86				

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 MDAC 2.5 Service Pack 3.
Mais Informações
O problema não ocorre com o Microsoft OLE DB para Oracle (MSDAORA) provedor.

Passos para reproduzir o problema

  1. Criar um novo Microsoft Visual Basic 6.0 Standard EXE Project. Por padrão, é criado o Form1.
  2. No menu Project , clique em referências e, em seguida, adicione uma referência para Microsoft ActiveX Data Objects 2.5 Library.
  3. Cole o seguinte código no evento Form_Load do Form1:
      Dim con As ADODB.Connection  Dim rst As ADODB.Recordset    Set con = New ADODB.Connection  With con    .CursorLocation = adUseClient    .ConnectionString = "Provider=MSDASQL.1;UID=MyUser;PWD=MyPwd;DRIVER={Microsoft ODBC for Oracle};SERVER=MyServer;"    .Open  End With    Set rst = New ADODB.Recordset  With rst    .ActiveConnection = con    .CursorLocation = adUseClient    .CursorType = adOpenStatic    .LockType = adLockOptimistic    'This one fails!    .Source = "SELECT MyKey,UpdateVal,LookUpVal FROM UpdateTest WHERE (LookUpVal = 'Test2(Test2')"    'This one works!        '.Source = "SELECT MyKey,UpdateVal,LookUpVal FROM UpdateTest where LookUpVal='Test1'"    .Open  End With    rst.Fields(1).Value = 200  rst.Update					
  4. Altere a seqüência de conexão para se conectar ao Oracle servidor.
  5. Crie uma tabela UpdateTest com MyKey (chave primária), UpdateVal e LookUpVal.
  6. Adicione duas linhas da seguinte maneira:
    • Primeiro registro contém LookUpVal = Test2(Test2
    • Segundo registro contém LookUpVal = Test1

  7. Inicie o projeto.
Referências

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 292604 - Última Revisão: 02/24/2014 15:31:26 - Revisão: 3.2

  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.5 Service Pack 2
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbmdac250sp3fix kbbug kbfix kboracle kbwin2000sp3fix KB292604 KbMtpt
Comentários