Domanda

Ricevo il seguente errore in un ADP di MS Access quando provo ad aggiungere un record su un modulo collegato a una tabella MS SQL Server 2000:

Errore di runtime '31004':

Il valore di un campo (automatico) non può essere recuperato prima di essere salvato.

Si prega di salvare il record che contiene il campo (Autonumber) prima di eseguire questa azione.Nota: recuperato in realtà è scritto male nell'errore.

Qualcuno sa cosa significa?

Ho effettuato una ricerca sul Web e sono riuscito a trovare la risposta solo in un determinato sito a cui hanno accesso solo gli esperti.

È stato utile?

Soluzione

Prima di tutto, se vuoi consultare lo scambio di esperti, fallo in FireFox, vedrai le risposte sbloccate in fondo alla pagina.

In secondo luogo, hai un sottomodulo su quel modulo che utilizza il campo numerazione/chiave automatica sul modulo principale?È necessario che i dati presenti in quel sottomodulo vengano salvati (ovvero, abbiano una propria chiave) prima che il modulo principale venga salvato.Potresti trovarti in una situazione di stallo in cui A e B richiedono di salvarsi prima a vicenda.

A parte questo, devi in ​​qualche modo accedere a quel campo di numerazione automatica quando lo stai salvando.La cosa migliore che posso suggerire è di scorrere il codice riga per riga.

Altri suggerimenti

Stai tentando di assegnare il valore di un campo Identità a una variabile o qualcos'altro prima di aver salvato il record?

Per qualche motivo, la tua app sta tentando di leggere il valore del campo Identity prima che il record venga salvato, che è ciò che genera quel campo Identity.In altre parole, non esiste alcun valore per il campo Autonumber finché la riga non viene salvata.

Penso che dovremmo vedere più codice o saperne di più sui passaggi che portano a questo errore per risolverlo in modo più dettagliato.

Dovresti aggiungere alcune righe di codice per mostrarci come gestisci i tuoi dati e cosa stai facendo esattamente.Ma sospetto che si tratti di un problema relativo a un aggiornamento del recordset.puoi identificare quando viene creato il valore di numerazione automatica?È disponibile in un controllo su un modulo?Puoi aggiungere un controllo per visualizzare questo valore per verificare come viene generato quando si aggiunge un nuovo record?Il recordset sottostante è aggiornato correttamente?Puoi aggiungere qualcosa come me.recordset.update su alcuni eventi del modulo:Vorrei provare quello di OnCurrent...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top