Molto tempo fa avevo chiesto aiuto per un problema di form che si corrompono dopo la chiusura senza apparente motivo in un grosso applicativo access.
https://www.iprogrammatori.it/forum-programmazione/access/form-che-si-sfasciano-t54170.html
Si trattava solo di form in multiistanza, quelle classiche aperte con DoCmd.OpenForm non avevano problemi. Dopo aver adottato due accorgimenti per minimizzare moltissimo il problema (prima istanza aperta con DoCmd, sia in quella sia in una eventuale seconda intercettazione dell'evento Form_Close dove, invece di chiudere, rendo solo invisibile, quindi a successiva richiesta rendo di nuovo visibile, però con la terza pur rara il problema tornava) ho finalmente scoperto qual'era il problema, quindi lo comunico a chi eventualmente vi fosse incappato o v'incappasse.
Il problema era che eliminavo l'oggetto nella collection delle form multiistanza dentro l'evento Form_Close della form stessa. Questo metodo non aveva mai dato problermi per 20 anni sulla vecchia versione dell'applicativo che interfacciava un backend Access, in questo che interfaccia un db MySql invece sì. Ho eliminato il problema delegando la distruzione dell'oggetto a una routine apposita che viene chiamata sempre a ogni nuova apertura di maschera (SysMaint) che fa tante cose, come controllo di versioni, conflitti per utenti entrati due volte, pulizia di tabelle temporanee access ecc... In questa routine scorro la collection verificando la validità dell'oggetto, se l'oggetto non è più valido, quindi la form è stata chiusa, lo elimino.
Ho deciso comunque di tenere attivi i due espedienti che ho descritto poiché usare il DoCmd alla prima apertura (che potrebbe rimanere la sola) Access viene stressato di meno, e il nascondere la form invece di chiuderla rende più veloce la successiva riapertura. In sostanza chiudo solo dalla terza in poi. Pericolo di troppe maschere attive non ce n'è poiché consento le aperture multiistanza solo a poche.
Colgo anche l'occasione per un bilancio del mio metodo di usare tabelle temporanee access da linkare alle form invece della tabelle MySql, sul quale c'è stato molto scetticismo. Assicuro che dopo un anno e mezzo di funzionamento con clienti da una quindicina di postazioni va benissimo.