CORRECÇÃO: IN e cláusulas UNION produtos número de coluna incorrecta

Traduções de Artigos Traduções de Artigos
Artigo: 283842 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sintomas

Com o Microsoft OLE DB Provider para Oracle (MSDAORA), a execução de uma instrução de SQL que contém um IN e uma cláusula UNION pode produzir um objecto de conjunto de registos do ActiveX Data Objects (ADO) que contém um número incorrecto de colunas.

Este problema ocorre quando utilizar um cursor do lado do cliente de ADO (o que significa que a propriedade CursorLocation é definida como adUseClient ) mas funciona correctamente quando utilizar um cursor do lado do servidor.

Resolução

Para resolver este problema, obtenha o service pack mais recente do Microsoft MDAC 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
Para resolver este problema, obtenha o service pack mais recente do Microsoft Data Access Components 2.6. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
300635INFO: Como obter o MDAC 2.6 mais recente Service Pack

Correcção

A versão inglesa desta correcção deverá ter os seguintes atributos de ficheiro ou posteriores:
   Version       Size      File name     Platform
   -------------------------------------------------------
   2.53.6007.0   209,168   Msdaora.dll   x86
				

Como contornar

O problema não ocorre se utilizar um cursor do lado do servidor; a propriedade CursorLocation está definida como adUseServer .

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.6 Service Pack 2, o MDAC 2.5 SP3 e o MDAC 2.7.

Mais Informação

Passos para reproduzir o comportamento

  1. Adicione o seguinte código num novo projecto do Visual Basic e defina uma referência de projecto para o Microsoft ActiveX Data Objects 2.5 Library:
    Private Sub Command1_Click()
    
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        cn.Open "Provider=MSDAORA;Data Source=your_oracle_server;User ID=your_user_name;Password=your_password"
        On Error Resume Next
        cn.Execute "Drop table oratest"
        cn.Execute "CREATE TABLE ORATEST(Col1 VARCHAR2(10) NULL," & _
                   "Col2 VARCHAR2(10) NULL)"
        cn.Execute "insert into oratest values(7,7)"
        cn.Execute " insert into oratest values(6,6)"
        cn.Execute "Drop table DUAL"
        cn.Execute "CREATE TABLE DUAL(C11 VARCHAR2(10) NULL," & _
                   "C12 VARCHAR2(10) NULL)"
        cn.Execute "insert into dual values(6,7)"
        rs.CursorLocation = adUseClient
        rs.Open "select col1, col2 from oratest where col1 in (Select C11 from dual union select C12 from dual)", _
                cn, adOpenStatic,adLockBatchOptimistic
        
        Debug.Print rs.Fields.Count      '<--- incorrect column count       
        Debug.Print rs.Fields(0).Name
        Debug.Print rs.Fields(1).Name
    End Sub
    					
  2. Quando executar o projecto acima, é apresentado um número incorrecto de colunas. Também poderá ver o erro "O objecto foi aberto" Quando observar contagem de campos o conjunto de registos na janela Watch do Visual Basic. Neste caso, a linha "Debug.Print rs.Fields.Count" não seria impresso qualquer resultado na janela imediata.

Propriedades

Artigo: 283842 - Última revisão: 7 de abril de 2006 - Revisão: 6.1
A informação contida neste artigo aplica-se a:
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft OLE DB Provider for Oracle Server 1.0
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.6
Palavras-chave: 
kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260sp2fix kboracle kbprovider KB283842 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: 283842

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