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.
Ereignisbezogene Fehler
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.