Ciao Marco,
sono riuscito a riprodurre il tuo errore nel seguente modo: ho creato una form associata in cui ho inserito un pulsante. Nell'evento click ho inserito il comando
DoCmd.RunCommand acCmdRecordsGoToNew
e successivamente l'ho sostituito con il comando
DoCmd.GoToRecord , , acNewRec
I due comandi realizzando lo stesso risultato, ovvero spostano il focus nel nuovo record della maschera ed entrambi, la prima volta, non restituiscono errori. Se, tuttavia, dopo essermi spostato nel nuovo record, clicco
di nuovo sul pulsante eseguendo una seconda volta il comando, con l'istruzione
DoCmd.RunCommand acCmdRecordsGoToNew
ottengo l'errore 2046 mentre il l'istruzione
DoCmd.GoToRecord , , acNewRec
non mi viene restituito alcun errore.
Credo che sia un comportamento "by design" su cui poco si può fare. In qualche post in giro per il mondo leggo che DoCmd.RunCommand
acCmdRecordsGoToNew è un istruzione deprecata.
L'unica cosa che potresti fare, volendo per qualche motivo continuare ad utilizzarla, è quello di testare il record attuale:
If Not Me.NewRecord then
DoCmd.RunCommand acCmdRecordsGoToNew
End If
David