Freigeben über


ADO-Fehler

Gilt für: Access 2013, Office 2013

ADO Errors are reported to your program as run-time errors. You can use the error-trapping mechanism of your programming language to trap and handle them. For example, in Visual Basic, use the On Error statement. In Visual J++, use a try-catch block. In Visual C++, it depends on the method you are using to access the ADO libraries. With #import, use a try-catch block. Otherwise, C++ programmers need to explicitly retrieve the error object by calling GetErrorInfo. The following Visual Basic sub procedure demonstrates trapping an ADO error:

 
' BeginErrorHandlingVB01 
Private Sub Form_Load() 
 ' Turn on error handling 
 On Error GoTo FormLoadError 
 
 'Open the database and the recordset for processing. 
 ' 
 Dim strCnn As String 
 strCnn = "Provider='sqloledb';" & _ 
 "Data Source='MySqlServer';" & _ 
 "Initial Catalog='Northwind';Integrated Security='SSPI';" 
 
 ' cnn is a Public Connection Object because 
 ' it was defined WithEvents 
 Set cnn = New ADODB.Connection 
 cnn.Open strCnn 
 
 ' The next line of code intentionally causes 
 ' an error by trying to open a connection 
 ' that has already been opened. 
 cnn.Open strCnn 
 
 ' rst is a Public Recordset because it 
 ' was defined WithEvents 
 Set rst = New ADODB.Recordset 
 rst.Open "Customers", cnn 
 
 Exit Sub 
 
' Error handler 
FormLoadError: 
 Dim strErr As String 
 Select Case Err 
 Case adErrObjectOpen 
 strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf 
 strErr = strErr & "Error reported by: " & Err.Source & vbCrLf 
 strErr = strErr & "Help File: " & Err.HelpFile & vbCrLf 
 strErr = strErr & "Topic ID: " & Err.HelpContext 
 MsgBox strErr 
 Debug.Print strErr 
 Err.Clear 
 Resume Next 
 ' If some other error occurs that 
 ' has nothing to do with ADO, show 
 ' the number and description and exit. 
 Case Else 
 strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf 
 MsgBox strErr 
 Debug.Print strErr 
 Unload Me 
 End Select 
End Sub 
' EndErrorHandlingVB01 

Dieses Form_Load -Ereignis erzeugt absichtlich einen Fehler, indem versucht wird, dasselbe Connection -Objekt zwei Mal zu öffnen. Beim zweiten Aufruf der Open -Methode wird der Fehlerhandler aktiviert. In diesem Fall ist der Fehler vom Typ adErrObjectOpen, weshalb der Fehlerhandler die folgende Fehlermeldung anzeigt, bevor die Ausführung des Programms fortgesetzt wird:

Error #3705: Operation is not allowed when the object is open. 
Error reported by: ADODB.Connection 
Help File: E:\WINNT\HELP\ADO260.CHM Topic ID: 1003705 

Die Fehlermeldung enthält alle Informationen, die vom Err-Objekt von Visual Basic bereitgestellt werden, mit Ausnahme des LastDLLError-Werts , der hier nicht zutrifft. Die Fehlernummer gibt an, welcher Fehler aufgetreten ist. Die Beschreibung ist nützlich in Fällen, in denen Sie den Fehler nicht selbst behandeln möchten. Sie können es einfach an den Benutzer übergeben. Obwohl Sie in der Regel nachrichten verwenden möchten, die für Ihre Anwendung angepasst sind, können Sie nicht jeden Fehler antizipieren. Die Beschreibung gibt einen Hinweis darauf, was schiefgelaufen ist. Im Beispielcode wurde der Fehler vom Connection-Objekt gemeldet. Hier wird der Typ oder die programmgesteuerte ID des Objekts angezeigt, kein Variablenname.

Hinweis

[!HINWEIS] Das Err -Objekt von Visual Basic enthält nur Informationen zum letzten Fehler. Die Errors -Auflistung von ADO des Connection -Objekts enthält ein Error -Objekt pro Fehler, der vom letzten ADO-Vorgang ausgelöst wurde. Verwenden Sie die Errors -Auflistung anstelle des Err -Objekts, um mehrere Fehler zu behandeln. Weitere Informationen zur Errors -Auflistung finden Sie unter Anbieterfehler. Wenn jedoch kein gültiges Connection -Objekt vorhanden ist, stellt das Err -Objekt die einzige Informationsquelle für ADO-Fehler dar.

Durch welche Vorgänge werden wahrscheinlich ADO-Fehler verursacht? Zu häufigen ADO-Fehlern zählt das Öffnen eines Objekts wie z. B. eines Connection- oder Recordset-Objekts, das Aktualisieren von Daten oder das Aufrufen einer Methode oder Eigenschaft, die von Ihrem Anbieter nicht unterstützt wird.

OLE DB-Fehler können außerdem in der Errors -Auflistung als Laufzeitfehler an die Anwendung übergeben werden. Weitere Informationen zu OLE DB-Fehlernummern finden Sie in Kapitel 16 der OLE DB-Programmierreferenz.