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

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
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
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).NameEnd 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.

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 283842 - Poslední kontrola: 01/05/2015 12:56:23 - Revize: 6.1

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

  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbmdac250sp3fix kbbug kbfix kbmdac260sp2fix kboracle kbprovider KB283842 KbMtcs
Váš názor