Oprava: IN a UNION klauzulí Plodiny nesprávný počet sloupců

Překlady článku Překlady článku
ID článku: 283842 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Provádění příkazu SQL, který obsahuje IN a klauzuli UNION s Microsoft OLE DB Provider pro Oracle (MSDAORA), může způsobit objektu Recordset ActiveX Data Objects (ADO), který obsahuje nesprávný počet sloupců.

K tomuto problému dochází při použití kurzor klienta ADO (což znamená, že je vlastnost CursorLocation nastavena na adUseClient), ale pracuje správně při použití kurzor na straně serveru.

Řešení

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro Microsoft MDAC 2.5. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
293312INFORMACE: Jak získat nejnovější MDAC 2.5 Service Pack
Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro Microsoft Data Access Components 2.6. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
300635INFORMACE: Jak získat nejnovější MDAC 2.6 Service Pack

Oprava hotfix

Anglická verze této opravy má následující nebo vyšší atributy souborů:
   Version       Size      File name     Platform
   -------------------------------------------------------
   2.53.6007.0   209,168   Msdaora.dll   x86
				

Jak potíže obejít

Problém nenastane, pokud použijete kurzor na straně serveru; CursorLocation vlastnost nastavena na adUseServer.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku. Tento problém byl poprvé opraven v aktualizaci Microsoft Data Access Components 2.6 Service Pack 2, MDAC 2.5 SP3 a MDAC 2.7.

Další informace

Kroky pro reprodukci tohoto chování

  1. Přidejte následující kód nový projekt jazyka a nastavit referenční Project 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. Při spuštění výše projektu je zobrazen nesprávný počet sloupců. Také může zobrazit chyba "Objekt byl otevřený" při sledovat počet záznamů pole v okně kukátka jazyka. V tomto případě by tisk řádku "Debug.Print rs.Fields.Count" není žádné výsledek v okně Immediate.

Vlastnosti

ID článku: 283842 - Poslední aktualizace: 7. dubna 2006 - Revize: 6.1
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260sp2fix kboracle kbprovider KB283842 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:283842

Dejte nám zpětnou vazbu

 

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