FIX: Clausole unione e IN produzione numero di colonne non valido

Traduzione articoli Traduzione articoli
Identificativo articolo: 283842 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sintomi

Con il Microsoft Provider OLE DB per Oracle (MSDAORA), l'esecuzione di un'istruzione SQL contenente un IN e una clausola UNION può produrre un oggetto di ADO (ActiveX Data Objects) Recordset che contiene un numero di colonne non corretto.

Questo problema si verifica quando si utilizza un cursore ADO sul lato client (ovvero che la proprietà CursorLocation è impostata su adUseClient ) ma funziona correttamente quando si utilizza un cursore sul lato server.

Risoluzione

Per risolvere il problema, ottenere il service pack più recente per Microsoft MDAC 2.5. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
293312INFORMAZIONI: Come ottenere il più recente MDAC 2.5 Service Pack
Per risolvere il problema, ottenere il service pack più recente per Microsoft Data Access Components 2.6. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
300635INFORMAZIONI: Come ottenere il più recente MDAC 2.6 Service Pack

Hotfix

La versione inglese di questa correzione deve essere di avere i seguenti attributi di file o versioni successive:
   Version       Size      File name     Platform
   -------------------------------------------------------
   2.53.6007.0   209,168   Msdaora.dll   x86
				

Workaround

Il problema non si verifica se si utilizza un cursore sul lato server, la proprietà CursorLocation è impostata su adUseServer .

Status

Microsoft ha confermato che questo problema riguarda i prodotti Microsoft elencati all'inizio di questo articolo. Questo problema è stato innanzitutto corretto in Microsoft Data Access Components 2.6 Service Pack 2, MDAC 2.5 SP3 e MDAC 2.7.

Informazioni

Procedura per riprodurre il problema.

  1. Aggiungere il codice riportato di seguito in un nuovo progetto Visual Basic e impostare un riferimento di progetto a 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 si esegue il progetto precedente, viene visualizzato un numero di colonne non corretto. Potrebbe essere inoltre visualizzato l'errore "Oggetto non è aperto" quando si notano conteggio campi del recordset la finestra di controllo di Visual Basic. In questo caso, la riga "Debug.Print rs.Fields.Count" stampare non qualsiasi risultato nella finestra immediata.

Proprietà

Identificativo articolo: 283842 - Ultima modifica: venerdì 7 aprile 2006 - Revisione: 6.1
Le informazioni in questo articolo si applicano 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
Chiavi: 
kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260sp2fix kboracle kbprovider KB283842 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 283842
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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