Freigeben über


Anbieterfehler

Gilt für: Access 2013, Office 2013

Wenn ein Anbieterfehler auftritt, wird der Laufzeitfehler -2147467259 zurückgegeben. Wenn dieser Fehler angezeigt wird, überprüfen Sie die Errors-Auflistung des aktiven Connection-Objekts, die mindestens einen Fehler mit einer Beschreibung enthält.

Errors-Auflistung von ADO

Da ein BESTIMMTER ADO-Vorgang mehrere Anbieterfehler verursachen 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 mindestens ein Error-Objekt , wenn ein Fehler aufgetreten ist und der Anbieter einen oder mehrere Fehler ausgelöst hat. Untersuchen Sie jedes einzelne Fehlerobjekt, um die genaue Ursache des Fehlers zu ermitteln.

Wenn Sie alle aufgetretenen Fehler behandelt haben, können Sie die Auflistung durch Aufrufen der Clear -Methode leeren. Es ist sehr wichtig, dass die Errors-Auflistung geleert wird, bevor Sie die Methoden Resync, UpdateBatch oder CancelBatch für ein Recordset-Objekt aufrufen, die Open-Methode für ein Connection-Objekt aufrufen, oder die Filter-Eigenschaft für ein Recordset-Objekt festlegen. Durch das explizite Leeren der Auflistung haben Sie die Sicherheit, dass in der Auflistung keine Error -Objekte von einem vorherigen Vorgang mehr übrig sind.

Bei manchen Vorgängen können Warnungen sowie Fehler generiert werden. Warnungen werden ebenfalls 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 festzustellen, ob von einem bestimmten Vorgang eine Warnung erzeugt wurde. Falls ein Wert von mindestens eins vorhanden ist, wurde der Auflistung ein Error-Objekt hinzugefügt. Wenn Sie festgestellt haben, dass die Errors-Auflistung Fehler oder Warnungen enthält, können Sie die Auflistung durchlaufen und Informationen zu jedem vorhandenen Error-Objekt abrufen. Dies wird anhand des folgenden kurzen Visual Basic-Beispiels 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, mit der jedes Objekt in der Errors-Auflistung überprüft wird. In diesem Beispiel wird lediglich eine Meldung zur Anzeige erfasst. Bei einem funktionierenden Programm würden Sie Code erstellen, um für jeden Fehler eine entsprechende Aufgabe auszuführen, wie z. B. alle geöffneten Dateien schließen und das Programm auf geordnete Weise herunterfahren.

Error-Objekt

Durch das Überprüfen eines Error-Objekts können Sie bestimmen, welcher Fehler aufgetreten ist und, was noch wichtiger ist, welche Anwendung oder welches Objekt den Fehler verursachte. Das Error-Objekt weist die folgenden Eigenschaften auf:

Name der Eigenschaft

Beschreibung

Beschreibung

Beschreibender Text für den aufgetretenen Fehler.

HelpContext, HelpFile

Das Hilfethema und die Hilfedatei, die eine Beschreibung des aufgetretenen Fehlers enthalten.

NativeError

Die anbieterspezifische Fehlernummer.

Number

Eine lange ganze Zahl, die die Zahl (in ErrorValueEnum aufgeführt) des aufgetretenen Fehlers darstellt.

Source

Gibt den Namen des Objekts oder der Anwendung an, das bzw. die einen Fehler generierte.

Sqlstate

Ein aus fünf Zeichen bestehender Fehlercode, den der Anbieter während der Verarbeitung einer SQL-Anweisung zurückgibt.

Das Error-Objekt von ADO ist weitgehend identisch mit dem standardmäßigen Err-Objekt von Visual Basic. Dessen Eigenschaften beschreiben den aufgetretenen Fehler. Neben der Fehlernummer erhalten Sie auch zwei zusammengehörige Informationselemente. Die NativeError-Eigenschaft enthält eine Fehlernummer speziell für den verwendeten Anbieter. Im vorherigen Beispiel wird der Microsoft OLE DB-Anbieter für SQL Server verwendet, weshalb NativeError Fehler speziell für SQL Server enthält. Die SQLState-Eigenschaft weist einen aus fünf Zeichen bestehenden Code auf, mit dem ein Fehler in einer SQL-Anweisung beschrieben wird.

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

Wenn der Vorgang, der ein Ereignis verursachte, erfolgreich abgeschlossen wird, wird der adStatus-Parameter des Ereignishandlers auf adStatusOK festgelegt. Wenn andernfalls der Vorgang, der das Ereignis auslöste, nicht erfolgreich war, wird der adStatus-Parameter auf adStatusErrorsOccurred festgelegt. In diesem Fall enthält der pError-Parameter ein Error-Objekt, das den Fehler beschreibt.