Freigeben über


Anbieterfehler

Wenn ein Anbieterfehler auftritt, wird ein Laufzeitfehler von -2147467259 zurückgegeben. Wenn Sie diesen Fehler erhalten, überprüfen Sie die Errors Auflistung des aktiven Connection-Objekts, das mindestens einen Fehler enthält, der beschreibt, was aufgetreten ist.

Die ADO Errors-Auflistung

Da ein ADO-Vorgang mehrere Anbieterfehler erzeugen kann, macht ADO eine Auflistung von Fehlerobjekten über das Connection-Objekt verfügbar. Diese Auflistung enthält keine Objekte, wenn ein Vorgang erfolgreich abgeschlossen wird, und enthält ein oder mehrere Error-Objekte, wenn etwas schiefgegangen ist und der Anbieter einen oder mehrere Fehler ausgelöst hat. Untersuchen Sie jedes Fehlerobjekt, um die genaue Ursache des Fehlers zu ermitteln.

Sobald Sie alle aufgetretenen Fehler behandelt haben, können Sie die Sammlung löschen, indem Sie die Clear-Methode aufrufen. Es ist besonders wichtig, die Errors Collection explizit zu löschen, bevor Sie die Resync, UpdateBatchoder CancelBatch -Methode für ein Recordset- -Objekt aufrufen, die Open-Methode für ein Connection-Objekt, oder legen Sie die eigenschaft Filter für ein Recordset-Objekt fest. Durch das explizite Löschen der Auflistung können Sie sicher sein, dass alle Error-Objekte in der Auflistung nicht von einem vorherigen Vorgang übrig bleiben.

Einige Vorgänge können zusätzlich zu Fehlern Warnungen generieren. Warnungen werden auch durch Error-Objekte in der Errors-Auflistung dargestellt. Wenn ein Anbieter der Auflistung eine Warnung hinzufügt, wird kein Laufzeitfehler generiert. Überprüfen Sie die Count-Eigenschaft der Errors -Auflistung, um zu ermitteln, ob eine Warnung durch einen bestimmten Vorgang erstellt wurde. Wenn die Anzahl eins oder mehr ist, wurde der Auflistung ein Fehler-Objekt hinzugefügt. Sobald Sie festgestellt haben, dass die Errors Auflistung Fehler oder Warnungen enthält, können Sie die Auflistung durchlaufen und Informationen zu jedem Error-Objekt abrufen, das sie enthält. Im folgenden kurzen Visual Basic-Beispiel wird dies veranschaulicht:

' 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  

Die Fehlerbehandlungsroutine enthält eine For Each Schleife, die jedes Objekt in der Errors -Auflistung untersucht. In diesem Beispiel wird eine Meldung für die Anzeige angesammelt. In einem Arbeitsprogramm würden Sie Code schreiben, um eine entsprechende Aufgabe für jeden Fehler auszuführen, z. B. alle geöffneten Dateien zu schließen und das Programm auf geordnete Weise herunterzufahren.

Das Error-Objekt

Durch Untersuchen eines Error-Objekts können Sie bestimmen, welcher Fehler aufgetreten ist, und wichtiger, welche Anwendung oder welches Objekt den Fehler verursacht hat. Das Error-Objekt weist die folgenden Eigenschaften auf:

Eigenschaftsname Beschreibung
Beschreibung Eine Textbeschreibung des aufgetretenen Fehlers.
HelpContext, HelpFile Bezieht sich auf das Hilfethema und die Hilfedatei, die eine Beschreibung des aufgetretenen Fehlers enthält.
NativeError Die anbieterspezifische Fehlernummer.
Nummer Eine lange ganze Zahl, die die Zahl (in der ErrorValueEnum) des aufgetretenen Fehlers darstellt.
Quelle Gibt den Namen des Objekts oder der Anwendung an, das einen Fehler generiert hat.
SQLState Ein fünfstelligen Fehlercode, den der Anbieter während des Prozesses einer SQL-Anweisung zurückgibt.

Das ADO Error-Objekt ist dem standardmäßigen Visual Basic Err-Objekt sehr ähnlich. Die Eigenschaften beschreiben den aufgetretenen Fehler. Zusätzlich zur Fehlernummer erhalten Sie auch zwei verwandte Informationen. Die NativeError-Eigenschaft enthält eine Fehlernummer, die für den verwendeten Anbieter spezifisch ist. Im vorherigen Beispiel ist der Anbieter der Microsoft OLE DB-Anbieter für SQL Server, sodass NativeError- Spezifische Fehler für SQL Server enthalten. Die SQLState--Eigenschaft verfügt über einen aus fünf Buchstaben bestehenden Code, der einen Fehler in einer SQL-Anweisung beschreibt.

Das Error-Objekt wird auch verwendet, wenn ereignisbezogene Fehler auftreten. Sie können ermitteln, ob ein Fehler im Prozess aufgetreten ist, der ein ADO-Ereignis ausgelöst hat, indem Sie das Error-Objekt überprüfen, das als Ereignisparameter übergeben wird.

Wenn der Vorgang, der ein Ereignis verursacht, erfolgreich abgeschlossen wird, wird der adStatus Parameter des Ereignishandlers auf adStatusOK-festgelegt. Wenn der Vorgang, der das Ereignis ausgelöst hat, nicht erfolgreich war, wird der adStatus-Parameter auf adStatusErrorsOccurredgesetzt. In diesem Fall enthält der pError Parameter ein Error-Objekt, das den Fehler beschreibt.