Errori del provider
Quando si verifica un errore del provider, viene restituito un errore di runtime di -2147467259. Quando viene visualizzato questo errore, controllare l'insieme Errors dell'oggetto Connection attivo, che conterrà uno o più errori che descrivono ciò che si è verificato.
Raccolta di Errori ADO
Poiché una particolare operazione ADO può produrre più errori del provider, ADO espone una raccolta di oggetti di errore tramite l'oggetto Connection. Questa raccolta non contiene oggetti se un'operazione si conclude correttamente e contiene uno o più oggetti di errore se si è verificato un problema e il provider ha sollevato uno o più errori. Esaminare ogni oggetto errore per determinare la causa esatta dell'errore.
Non appena è stata completata la gestione degli errori che si sono verificati, è possibile cancellare la raccolta chiamando il metodo Clear. È particolarmente importante cancellare in modo esplicito la raccolta Errors prima di chiamare il metodo Resync, UpdateBatcho CancelBatch su un oggetto Recordset, il metodo Open su un oggetto Connection, oppure impostare la proprietà Filter su un oggetto Recordset. Cancellando in modo esplicito la raccolta, è possibile assicurarsi che eventuali oggetti di errore nella raccolta non siano lasciati da operazioni precedenti.
Alcune operazioni possono generare avvisi oltre agli errori. Gli avvisi sono rappresentati anche da oggetti Error nell'insieme Errors. Quando un provider aggiunge un avviso alla raccolta, non genera un errore di run-time. Controllare la proprietà Count della raccolta Errors per determinare se un avviso è stato generato da un'operazione specifica. Se il conteggio è uno o più, un oggetto Error è stato aggiunto all'insieme. Non appena si è determinato che l'insieme Errors contiene errori o avvisi, è possibile scorrere la raccolta e recuperare informazioni su ogni Error oggetto che contiene. Nell'esempio breve di Visual Basic seguente viene illustrato quanto segue:
' BeginErrorHandlingVB02
Private Function DeleteCustomer(ByVal CompanyName As String) As Long
On Error GoTo DeleteCustomerError
rst.Find "CompanyName='" & CompanyName & "'"
DeleteCustomerError:
Dim objError As ADODB.Error
Dim strError As String
If cnn.Errors.Count > 0 Then
For Each objError In cnn.Errors
strError = strError & "Error #" & objError.Number & _
" " & objError.Description & vbCrLf & _
"NativeError: " & objError.NativeError & vbCrLf & _
"SQLState: " & objError.SQLState & vbCrLf & _
"Reported by: " & objError.Source & vbCrLf & _
"Help file: " & objError.HelpFile & vbCrLf & _
"Help Context ID: " & objError.HelpContext
Next
MsgBox strError
End If
End Function
' EndErrorHandlingVB02
La routine di gestione degli errori include un ciclo For Each che esamina ogni oggetto nella raccolta Errors. In questo esempio accumula un messaggio per la visualizzazione. In un programma funzionante è necessario scrivere codice per eseguire un'attività appropriata per ogni errore, ad esempio chiudere tutti i file aperti e arrestare il programma in modo ordinato.
Oggetto Errore
Esaminando un Error oggetto è possibile determinare l'errore che si è verificato e più importante, quale applicazione o quale oggetto ha causato l'errore. L'oggetto Error ha le proprietà seguenti:
Nome della proprietà | Descrizione |
---|---|
Descrizione | Descrizione testuale dell'errore che si è verificato. |
HelpContext, HelpFile | Fa riferimento all'argomento della Guida e al file della Guida che contengono una descrizione dell'errore che si è verificato. |
NativeError | Numero di errore specifico del provider. |
numero | Intero lungo che rappresenta il numero (elencato nel ErrorValueEnum) dell'errore che si è verificato. |
fonte | Indica il nome dell'oggetto o dell'applicazione che ha generato un errore. |
SQLState | Codice di errore di cinque caratteri restituito dal provider durante il processo di un'istruzione SQL. |
L'oggetto Error di ADO è molto simile all'oggetto Err di Visual Basic standard. Le relative proprietà descrivono l'errore che si è verificato. Oltre al numero dell'errore, si ricevono anche due informazioni correlate. La proprietà NativeError contiene un numero di errore specifico per il provider in uso. Nell'esempio precedente il provider è il provider Microsoft OLE DB per SQL Server, quindi NativeError conterrà errori specifici di SQL Server. La proprietà SQLState contiene un codice di cinque lettere che descrive un errore in un'istruzione SQL.
errori Event-Related
L'oggetto Error viene utilizzato anche quando si verificano errori correlati agli eventi. È possibile determinare se si è verificato un errore nel processo che ha generato un evento ADO controllando l'oggetto Error passato come parametro di evento.
Se l'operazione che causa un evento viene completata correttamente, il parametro adStatus del gestore eventi verrà impostato su adStatusOK. D'altra parte, se l'operazione che ha generato l'evento non è riuscita, il parametro adStatus è impostato su adStatusErrorsOccurred. In tal caso, il parametro pError conterrà un oggetto Error che descrive l'errore.