Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erweitert: Erfordert Expertenkenntnisse für Codierung, Interoperabilität und Mehrbenutzerfähigkeiten.
Dieser Artikel bezieht sich auf eine Microsoft Access-Datenbank (.mdb oder ACCDB) und ein Microsoft Access-Projekt (ADP).
Symptome
Wenn Sie ActiveX Data Objects (ADO) verwenden und die AddNew- oder Delete-Methode des Recordset-Objekts verwenden und das Recordset mit einem nicht angegebenen Sperrtyp öffnen, erhalten Sie möglicherweise eine der folgenden Fehlermeldungen:
Run-time error '3251': Object or provider is not capable of performing requested operation.
-oder-
Run-time error '3251':
The operation requested by the application is not supported by the provider.
-oder-
Run-time error '3251':
Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
Ursache
Standardmäßig werden ADO-Recordsets mit dem Sperrtyp adLockReadOnly geöffnet, der keine Ergänzungen und Löschungen zulässt.
Lösung
Um Ergänzungen und Löschungen zuzulassen, öffnen Sie das Recordset mit dem Sperrtyp adLockOptimistic oder adLockPessimistic, wie im folgenden Codebeispiel gezeigt:
Sub DelFirstRec()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "Select * from TestTable", CurrentProject.Connection, _
adOpenKeyset, adLockOptimistic
rs.MoveFirst
rs.Delete
rs.Close
End Sub
HINWEIS Sie können diesen Beispielcode verwenden, um das Verhalten im Abschnitt "Schritte zum Reproduzieren des Verhaltens" dieses Artikels zu beheben.
Weitere Informationen
Schritte zum Reproduzieren des Verhaltens
Erstellen Sie in einer neuen Access-Datenbank die folgende neue Tabelle, und nennen Sie sie TestTable:
Table:TestTable ---------------------------- Field Name: ID Data Type: Autonumber Indexed: Yes (No Duplicates) Field Name: Name Data Type: Text
Öffnen Sie die neue Tabelle in der Datenblattansicht, und geben Sie dann die folgenden Testdaten ein:
ID Name ----------------- 1 Beverages 2 Condiments 3 Confections 4 Dairy 5 Grains 6 Meat 7 Produce 8 Seafood
HINWEIS Der Beispielcode in diesem Artikel verwendet Microsoft ActiveX Data Objects. Damit dieser Code ordnungsgemäß ausgeführt werden kann, müssen Sie auf die Microsoft ActiveX Data Objects 2.x-Bibliothek verweisen (wobei 2.x für 2.1 oder höher steht). Klicken Sie hierzu im Visual Basic-Editor im Menü Extras auf Verweise, und stellen Sie sicher, dass das Kontrollkästchen Microsoft ActiveX Data Objects 2.x Library aktiviert ist.
Erstellen Sie ein Modul, und geben Sie dann die folgende Zeile im Abschnitt Deklarationen ein, falls sie noch nicht vorhanden ist:
Option Explicit
Geben Sie das folgende Verfahren ein:
Sub DelFirstRec()
Dim rs As New ADODB.Recordset
rs.Open "Select * from TestTable", CurrentProject.Connection, adOpenKeyset
rs.MoveFirst
rs.Delete
rs.Close
End Sub
Geben Sie zum Testen dieser Funktion die folgende Zeile in das Direktfenster ein, und drücken Sie dann die EINGABETASTE:
DelFirstRec
Beachten Sie, dass Sie die Fehlermeldung erhalten, die im Abschnitt "Symptome" dieses Artikels erwähnt wird. Wenn Sie die Tabelle überprüfen, sehen Sie außerdem, dass keine Datensätze gelöscht wurden.