Freigeben über


Sie können mit der ADO AddNew-Methode oder mit der Delete-Methode keine Datensätze hinzufügen oder löschen.

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

  1. 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
    
  2. Ö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
    
  3. 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

  4. 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

  1. 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.