Come risolvere gli errori che possono verificarsi quando si aggiornano i dati in query e moduli di Access

Numero KB originale: 328828

Nota

Richiede competenze di base per macro, codifica e interoperabilità. Questo articolo si applica a un database di Microsoft Access (.mdb e accdb) e a un progetto di Microsoft Access (con estensione adp).

Questo articolo descrive gli errori che possono verificarsi in Microsoft Access quando si aggiornano i dati nelle query e nei moduli. Questo articolo descrive anche le cause degli errori e come risolvere tali errori.

Quando si tenta di aggiornare i dati in una query o in un modulo, è possibile che venga visualizzato uno dei messaggi di errore seguenti:

Per l'operazione è necessaria una query aggiornabile.

-oppure-

L'oggetto Recordset non è aggiornabile.

Risoluzione dei problemi relativi ai problemi che possono verificarsi quando si aggiornano i dati in una query

  • Quando la query è basata su tre o più tabelle ed è presente una relazione molti-a-uno-a-molti, non è possibile aggiornare i dati direttamente nella query. È possibile aggiornare i dati in un modulo o in una pagina di accesso ai dati. È possibile eseguire questa operazione in base alla query quando la RecordsetType proprietà della maschera è impostata su Dynaset(Inconsistent Aggiornamenti).

  • Quando la query è una query a campi incrociati, non è possibile aggiornare i dati nella query.

  • Quando la query è una query pass-through di Microsoft SQL, non è possibile aggiornare i dati nella query.

  • Quando la query calcola una somma, una media, un conteggio o un altro tipo di totale sui valori di un campo, non è possibile aggiornare i dati nella query. Inoltre, non è possibile aggiornare una query che fa riferimento a un campo nella riga Aggiorna a da un campi incrociato, una query, una query di selezione o una sottoquery che contiene totali o funzioni di aggregazione. Per risolvere questo problema, usare la funzione Domain Aggregate nella riga Update To di una query di aggiornamento. È possibile fare riferimento ai campi da una query a campi incrociati, da una query di selezione o da una sottoquery che contiene totali o funzioni di aggregazione.

  • Quando la query è una query unione, non è possibile aggiornare i dati nella query.

  • Quando la proprietà Valori univoci della query è impostata su , non è possibile aggiornare i dati nella query. Per risolvere questo problema, impostare la proprietà Valori univoci della query su No.

  • Quando la query include una tabella ODBC collegata senza indice univoco o una tabella Paradox senza una chiave primaria, non è possibile aggiornare i dati nella query. Per risolvere questo problema, aggiungere una chiave primaria o un indice univoco alla tabella collegata.

  • Quando non si dispone delle autorizzazioni aggiorna dati per la query o la tabella sottostante, non è possibile aggiornare i dati. Per risolvere questo problema, assegnare le autorizzazioni per aggiornare i dati.

  • Quando la query include più di una tabella o una query e le tabelle o le query non vengono unite in join da una riga di join nella visualizzazione Struttura , non è possibile aggiornare i dati nella query. Per risolvere questo problema, è necessario unire correttamente le tabelle in modo da poterle aggiornare.

  • Quando il campo da aggiornare è un campo calcolato, non è possibile aggiornare i dati nella query.

  • Quando il campo che si tenta di aggiornare è di sola lettura, il database è aperto come di sola lettura o il database si trova in un'unità di sola lettura, non è possibile aggiornare i dati nella query. Per evitare questo problema, non aprire il database come di sola lettura. Se il database si trova in un'unità di sola lettura, rimuovere l'attributo di sola lettura dall'unità o spostare il database in un'unità non di sola lettura.

  • Quando il campo nel record che si tenta di aggiornare viene eliminato o bloccato da un altro utente, non è possibile aggiornare i dati nella query. Un record bloccato può essere aggiornato non appena il record viene sbloccato.

  • Quando la query è basata su tabelle con una relazione uno-a-molti, i tipi di campi che potrebbero non essere in grado di modificare sono i seguenti:

    • Campo join dal lato "uno".
    • Il campo side join "molti" non viene visualizzato nel foglio dati.
    • Unire il campo dal lato "molti" dopo l'aggiornamento dei dati sul lato "uno".
    • Esiste un campo vuoto dalla tabella sul lato "uno" di una relazione uno-a-molti con un outer join.
    • L'intera chiave univoca della tabella ODBC non è l'output.

    È possibile risolvere uno di questi problemi se si esegue l'azione corretta dall'elenco seguente:

    • Abilitare gli aggiornamenti a catena tra le due tabelle.
    • Aggiungere il campo join dal lato "molti" alla query in modo da poter aggiungere nuovi record.
    • Salvare il record. È possibile apportare modifiche al campo "molti" side join.
    • Immettere i valori nei campi della tabella sul lato "molti". È possibile eseguire questa operazione solo quando il campo unito dal lato "uno" contiene un valore per tale record.
    • Selezionare tutti i campi chiave primaria delle tabelle ODBC per consentire gli inserimenti.

Risoluzione dei problemi relativi ai problemi che possono verificarsi quando si aggiornano i dati in un modulo

  • Non è possibile aggiornare i dati in un modulo se il modulo è basato su una stored procedure con più tabelle.

  • Non è possibile aggiornare i dati in un modulo se il modulo è basato su un recordset ACTIVEX Data Objects (ADO). I moduli di accesso consentono di modificare i dati da un recordset ADO se il recordset ADO viene creato usando una combinazione di MSDataShape e i provider OLEDB SQL Server.