Non è possibile aggiungere record o eliminare record con il metodo ADO AddNew o con il metodo Delete
Avanzate: richiede competenze esperte di codifica, interoperabilità e multiutente.
Questo articolo si applica a un database di Microsoft Access (.mdb o accdb) e a un progetto di Microsoft Access (con estensione adp).
Sintomi
Quando si utilizza ActiveX Data Objects (ADO), se si utilizza il metodo AddNew o Delete dell'oggetto Recordset e si apre il recordset con un tipo di blocco non specificato, è possibile che venga visualizzato uno dei messaggi di errore seguenti:
Run-time error '3251': Object or provider is not capable of performing requested operation.
-oppure-
Run-time error '3251':
The operation requested by the application is not supported by the provider.
-oppure-
Run-time error '3251':
Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
Causa
Per impostazione predefinita, i recordset ADO vengono aperti con un tipo di blocco adLockReadOnly, che non consente aggiunte ed eliminazioni.
Risoluzione
Per consentire aggiunte ed eliminazioni, aprire il recordset con un tipo di blocco adLockOptimistic o adLockPessimistic, come nell'esempio di codice seguente:
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
NOTA È possibile usare questo codice di esempio per risolvere il comportamento nella sezione "Passaggi per riprodurre il comportamento" di questo articolo.
Ulteriori informazioni
Passaggi per riprodurre il comportamento
In un nuovo database di Access creare la nuova tabella seguente e denominarla TestTable:
Table:TestTable ---------------------------- Field Name: ID Data Type: Autonumber Indexed: Yes (No Duplicates) Field Name: Name Data Type: Text
Aprire la nuova tabella in visualizzazione Foglio dati e quindi digitare i dati di test seguenti:
ID Name ----------------- 1 Beverages 2 Condiments 3 Confections 4 Dairy 5 Grains 6 Meat 7 Produce 8 Seafood
NOTA Il codice di esempio in questo articolo usa Oggetti dati Microsoft ActiveX. Per l'esecuzione corretta di questo codice, è necessario fare riferimento alla libreria Microsoft ActiveX Data Objects 2.x ,dove 2.x è 2.1 o versione successiva. A tale scopo, fare clic su Riferimenti nel menu Strumenti in Visual Basic Editor e verificare che la casella di controllo Microsoft ActiveX Data Objects 2.x Library sia selezionata.
Creare un modulo e quindi digitare la riga seguente nella sezione Dichiarazioni se non è già presente:
Opzione esplicita
Digitare la procedura seguente:
Sub DelFirstRec()
Dim rs As New ADODB.Recordset
rs.Open "Select * from TestTable", CurrentProject.Connection, adOpenKeyset
rs.MoveFirst
rs.Delete
rs.Close
End Sub
Per testare questa funzione, digitare la riga seguente nella finestra Immediata e quindi premere INVIO:
DelFirstRec
Si noti che viene visualizzato il messaggio di errore indicato nella sezione "Sintomi" di questo articolo. Inoltre, quando si controlla la tabella, si nota che non sono stati eliminati record.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per