Oprava: ADO potlačí chyby při načítání do Nonvariant datové typy

Překlady článku Překlady článku
ID článku: 274423 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Při načítání hodnoty řádků do nonvariant datové typy, ActiveX Data Objects (ADO) může potlačit chyby související s stav záznamů, například upozornění záznam je uzamčen jiným uživatelem.

K tomuto problému dochází v Microsoft Data Access Components (MDAC) verze (RTM systému Windows 2000 nebo MDAC 2.5) 2.50.4403.12 a 2.51.5303.5 (Windows 2000 nebo MDAC 2.5 SP1). Tento problém nenastává v MDAC verze (MDAC 2.6 RTM) 2.60.6526.3.

Příčina

Cesta mírně odlišné kódu je převzat podle toho, zda aplikace načítání do varianty datové typy. Použití varianty zalomený v kontextu vnitřní objekt, který má schopnost vrátit informace o chybě. Nonvariants nemají Tento souhrnný kontextu a nevrací informace o chybě.

Řešení

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro Microsoft Data Access Components 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
Anglická verze této má atributy souborů (nebo novější), které jsou uvedeny v následující tabulce. Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Pokud zobrazíte informace o souboru, bude převedena na místní čas. Rozdíl mezi místním ČASEM a najít, použijte kartu časové pásmo v ovládacím panelu Datum a čas.
   Date       Version        Size             File name
   ----------------------------------------------------------
   8/29/2000  2.51.5629.0     20,480 bytes    Msader15.dll
   8/29/2000  2.51.5629.0    487,696 bytes    Msado15.dll
   8/29/2000  2.51.5629.0    172,304 bytes    Msadomd.dll
   8/29/2000  2.51.5629.0     57,616 bytes    Msador15.dll
   8/29/2000  2.51.5629.0    184,592 bytes    Msadox.dll
   8/29/2000  2.51.5629.0     57,616 bytes    Msadrh15.dll
   8/29/2000  2.51.5629.0     94,480 bytes    Msjro.dll
				

Možné řešení

Neexistuje žádné řešení tohoto problému.

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 Microsoft Data Access Components 2.5 Service Pack 2.

Další informace

Kroky pro reprodukci chování

  1. Zkopírujte následující kód do projektu jazyka:

    Poznámka:<username>Musíte změnit UID <uživatelské_jméno> hodnotu a PWD = hodnota < silné heslo > na správné hodnoty před spuštěním tohoto kódu. Ujistěte se, zda má zadaný uživatel příslušné oprávnění pro provedení této akce s databází.
    Dim cn As ADODB.Connection, cnOtherUser As ADODB.Connection
    Dim rs As ADODB.Recordset, rsOtherUser As ADODB.Recordset
    Dim strConn As String, strSQL As String
    Dim varData As Variant, intData As Integer
    
    strConn = "Provider=MSDASQL;Driver={SQL Server};Server=YourServer;Database=Northwind;UID=<user name>;PWD=<strong password>;"
    strSQL = "SELECT * FROM Customers"
    
    Set cnOtherUser = New ADODB.Connection
    cnOtherUser.Open strConn
    Set rsOtherUser = New ADODB.Recordset
    rsOtherUser.Open strSQL, cnOtherUser, adOpenKeyset, adLockPessimistic, adCmdText
    rsOtherUser.MoveFirst
    
    Set cn = New ADODB.Connection
    cn.Open strConn
    cn.CommandTimeout = 10
    Set rs = New ADODB.Recordset
    rs.Open strSQL, cn, adOpenKeyset, adLockPessimistic, adCmdText
    If MsgBox("Use Variant?", vbYesNo) = vbYes Then
        On Error Resume Next
        varData = rs(0)
        If Err.Number <> 0 Then
            MsgBox Err.Description
            Err.Clear
            cn.Errors.Clear
        Else
            MsgBox "No error!"
        End If
        On Error GoTo 0
    Else
        On Error Resume Next
        intData = rs(0)
        If Err.Number <> 0 Then
            MsgBox Err.Description
            Err.Clear
            cn.Errors.Clear
        Else
            MsgBox "No error!"
        End If
        On Error GoTo 0
    End If
    rs.Close
    cn.Close
    
    rsOtherUser.Close
    cnOtherUser.Close
    					
  2. Přidat odkaz Microsoft ActiveX Data Objects 2.5 knihovny.
  3. Spustit kód a zvolte Ano po zobrazení výzvy použijte variant. Všimněte si, že "Timeout vypršela" Chyba je vrácena zpráva označující, že záznamy by nejsou načteny v zadanou dobu.
  4. Znovu spustit kód a zvolte tento čas bez výzvy použijte variant. Tento čas je vrácena chyba oznamující není žádný aktuální záznam, ale není k dispozici žádný údaj váš časový limit byl překročen.

Odkazy

Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
247757Oprava: Použití parametrizované příkaz in ADO nevracení připojení
264442Oprava: ADO Recordset ztráta filtr vlastností při Marshalled-procedura
264701Oprava: Předávání ADO Recordset ByRef obnoví Error Information

Vlastnosti

ID článku: 274423 - Poslední aktualizace: 28. února 2014 - Revize: 2.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
Klíčová slova: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbado250fix kbbug kbfix kbmdac250fix kbqfe KB274423 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:274423

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