Summary: Questo blog illustra le diverse situazioni e le possibili cause che possono provocare l'errore 3022 del database di Access. Vengono inoltre illustrate le soluzioni per risolvere l'errore 3022.
L’errore 3022 di Access “Le modifiche richieste alla tabella non sono andate a buon fine” può verificarsi in una di queste situazioni:
- Quando si tenta di inserire un nuovo record in una tabella esistente con un campo “Autonumero”, è possibile che il campo “Autonumero” non sia stato inserito.
- Creare un modulo o un rapporto
- Durante l’accesso a un file di database memorizzato su una condivisione di rete
Suggerimento! Se si desidera ripristinare rapidamente il database di Access inaccessibile (.ACCDB/.MDB) senza perdita di dati, utilizzare il software Stellar Repair for Access. Il software aiuta a riparare il file di database e a recuperare tutti i suoi contenuti senza alcuna modifica. Scaricate lo strumento di riparazione di Access dal link sottostante per verificarne la funzionalità. |
Si tratta di un errore di runtime di Microsoft Access che viene segnalato con il seguente messaggio:
Figura 1 – Errore 3022 di Microsoft Access
Le possibili cause dell’errore di accesso 3022 e le relative soluzioni
Di seguito sono riportate le possibili cause dell’errore e le relative soluzioni:
Causa 1 – Il set di specifiche è corrotto
Secondo Microsoft, l’errore 3022 di Access può verificarsi a causa di un set di specifiche danneggiato.
Soluzione – Compattare il set di specifiche
Provate a compattare il set di specifiche corrente del vostro database Access. Se la compattazione riesce, ma si continua a ricevere l’errore 3022 di Access all’apertura di un componente di report, esportate il componente in un nuovo set di specifiche o ricreatelo. Se invece il processo di compattazione non riesce, provate a riparare il file del database.
Causa 2 – Problema con il database di Access
Il database di Access potrebbe comportarsi in modo diverso a causa della corruzione della tabella.
Soluzione – Compattare e riparare il database
L’esecuzione di un’operazione di compattazione e riparazione del database può aiutare a risolvere il problema. Seguite questi passaggi:
- Aprite il vostro database Access.
- Nella finestra visualizzata, premere il segno di croce (x) per chiudere la tabella del database (come mostrato nell’immagine seguente).
Figura 2 – Chiusura della tabella del database
- Fare clic sulla scheda Strumenti database e fare clic su Compatta e ripara database nel menu Strumenti.
Figura 3 – Selezionare Compatta e ripara database
- Nella finestra Database to Compact From (Database da compattare) che appare, fare clic su Browse (Sfoglia) per selezionare il database da compattare e riparare. Fare doppio clic sul database.
La copia del database compattato e riparato si trova nella stessa posizione del database originale.
Causa 3 – Il campo numerico automatico non è seminato correttamente
Un altro motivo comune che può portare all’errore 3022 di MS Access è che il campo Autonumber della chiave primaria non è seminato correttamente.
Soluzione – Reimpostare manualmente il campo numerico automatico
Esistono due metodi per reimpostare manualmente il campo Autonumero.
Metodo 1: utilizzare una query di definizione dei dati
È possibile ripristinare il campo ‘Autonumero’ cancellandolo. A tale scopo, aprire la tabella in visualizzazione Progettazione e reinserirla. I passaggi dettagliati sono elencati di seguito:
- Aprite un database in Access, fate clic sulla scheda Crea e selezionate Progettazione query nel gruppo Query.
Figura 4 – Progettazione della query di selezione
- Fare clic su Chiudi quando si apre la finestra di dialogo Mostra tabella.
Figura 5 – Chiusura della casella Mostra tabella
- Dalla scheda Progettazione, selezionare l’opzione Vista SQL nel gruppo Risultati.
Figura 6 – Selezionare la vista SQL
- Nella schermata Query1, inserire il seguente codice:
ALTER TABLE Table1 ALTER COLUMN AutoNumFieldName COUNTER(iMaxID,1);
Figura 7 – Query in Access
- Eseguire ora la query di cui sopra facendo clic sull’opzione Esegui nel gruppo Risultati.
Metodo 2 – Esecuzione del codice VBA
Se avete inserito nuovi record in una tabella di Access utilizzando l’applicazione Visual Basic (VBA), procedete come segue per reimpostare il campo Autonumero.
- In Access, fate clic sulla scheda Crea e poi su Modulo nel gruppo Macro e codice.
Figura 8 – Selezione del modulo
- Ora digitate il codice seguente nell’editor di Visual Basic.
Sub ResetAuto()
Dim iMaxID As Long
Dim sqlFixID As String
iMaxID = DMax(“”, “”) + 1
sqlFixID = “ALTER TABLE ALTER COLUMN COUNTER(” & & “,1)”
DoCmd.RunSQL sqlFixID
Fine Sub
Figura 9 – Codice per azzerare il campo AutoNumber
- Fare clic su Esegui per eseguire il codice sopra riportato.
Figura 10 – Opzione Esegui
Aprire la tabella e provare a inserire un nuovo record. Se questo non risolve l’errore di runtime 3022, è possibile che la tabella sia danneggiata. Utilizzare il software Stellar Repair for Access per riparare il database e recuperare i suoi oggetti, come tabelle, record eliminati, moduli, ecc.
Conclusione
È possibile che si verifichi l’errore 3022 del database Access quando si tenta di inserire un nuovo record in un campo Autonumber. Inoltre, l’errore può verificarsi quando si cerca di aprire un modulo o un file di database. Assicuratevi di capire la causa di questo errore prima di implementare le soluzioni discusse in questo blog. Se non si riesce ad accedere al file di database, utilizzare il software Stellar Repair for Access per ripristinare il database e i suoi oggetti.