FIX: ADO evita errori durante il recupero in tipi di dati nonvariant

Traduzione articoli Traduzione articoli
Identificativo articolo: 274423 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando si recupera i valori di set di righe in tipi di dati nonvariant, ActiveX Data Objects (ADO) pu˛ eliminare errori relativi allo stato del recordset, ad esempio le notifiche che il record Ŕ bloccato da un altro utente.

Questo problema si verifica in Microsoft Data Access Components (MDAC) versione 2.50.4403.12 (Microsoft Windows 2000/MDAC 2.5 RTM) e 2.51.5303.5 (Windows 2000/MDAC 2.5 SP1). Questo problema non si verifica nella versione di MDAC 2.60.6526.3 (MDAC 2.6 RTM).

Cause

Un percorso di codice leggermente diverso Ŕ tratto a seconda se l'applicazione Ŕ recupero in tipi di dati variant. L'utilizzo di varianti Ŕ inclusa in un oggetto di contesto interna che Ŕ in grado di restituire informazioni sugli errori. Nonvariants non dispongono di questo wrapper del contesto e non restituiscono informazioni sull'errore.

Risoluzione

Per risolvere il problema, ottenere il service pack pi¨ recente per Microsoft Data Access Components 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
La versione inglese di questo presenta gli attributi di file (o successivi) elencati nella tabella riportata di seguito. Date e ore per questi file sono indicati nella coordinated universal time (UTC). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello strumento Data e ora del Pannello di controllo.
   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
				

PER RISOLVERE IL PROBLEMA

Non sono disponibili soluzioni per risolvere questo problema.

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.5 Service Pack 2.

Informazioni

Procedura per riprodurre il problema

  1. Consente di copiare il codice riportato di seguito in un progetto Visual Basic:

    Nota <username>╚ necessario modificare l'UID <nomeutente> valore e il PWD = valore di < strong password > con i valori corretti prima di eseguire questo codice. Assicurarsi che UID disponga di autorizzazioni appropriati eseguire questa operazione sul database.
    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. Aggiungere un riferimento a Microsoft ActiveX Data Objects 2.5 Library.
  3. Eseguire il codice e scegliere quando viene richiesto di utilizzare un valore Variant. Si noti che un errore di "Timeout" messaggio viene restituito, che indica che i record potrebbero non essere recuperati il periodo di tempo specificato.
  4. Eseguire nuovamente il codice e questa volta scegliere No quando viene richiesto di utilizzare un valore Variant. Questa volta un errore viene restituito indicante che non includono alcun record corrente, ma nessun elemento indica che Ŕ stato superato il timeout.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
247757FIX: Perdita di connessione utilizzando il comando con parametri in ADO
264442FIX: Perdita di Recordset ADO proprietÓ Filter quando eseguire il marshalling in procedure
264701FIX: Passaggio ADO Recordset ByRef Reimposta informazioni sugli errori

ProprietÓ

Identificativo articolo: 274423 - Ultima modifica: lunedý 24 febbraio 2014 - Revisione: 2.2
Le informazioni in questo articolo si applicano a:
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
Chiavi:á
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbado250fix kbbug kbfix kbmdac250fix kbqfe KB274423 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: 274423
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