General

6.81 Access si riduce ad icona invece di chiudersi
  Davide La Mantia (Sib)
Solitamente questo inconveniente si verifica quando nel codice del programma sono presenti degli errori o, più semplicemente, si è adottato uno stile di sintassi corretto ma "non gradito" ad Access.
L'errore più comune consiste nel non chiudere un recordset alla fine di una routine, questo può portare anche all'errore di "Memoria esaurita". Ad esempio:
Sub Pippo ()
   Dim rst As RecordSet
   Set rst = CurrentDB.OpenRecordset ("SELECT * FROM Clienti")
   ... istruzioni ...
End Sub
In questa sub mancano due istruzioni molto importanti giusto prima di End Sub:
   rst.Close
   Set rst = Nothing
Questo consente di liberare la memoria utilizzata dalla variabile rst.
Anche non esplicitare una variabile booleana in una istruzione If può provocare problemi, se Me.Pippo è un controllo che contiene un valore booleano, è meglio usare:
If Me.Pippo = True then
piuttosto che:
If Me.Pippo then
In effetti entrambe sono corrette, ma per un baco di A97, la seconda potrebbe provocare problemi.
Altro fatto molto importante è non sottovalutare mai i possibili loop. Se una funzione richiama se stessa o se due funzioni si richiamano a vicenda può verificarsi un loop (anche non infinito) che satura facilmente la memoria del PC.
Per concludere, qualunque errore contenuto nel codice (anche quello non più utilizzato) può creare problemi di vario tipo, è quindi opportuno eseguire sempre un "Compila e salva tutti i moduli" dal menu Debug, questo vi aiuterà a trovare eventuali problemi.


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.