Newsgroup: it.comp.appl.access
Titolo: Nothing e Close

Lo ammetto, sono un po' pignolo...ma mi chiedevo qual'e' il modo giusto per
rilasciare gli oggetti recordset e database.
Io faccio cosi':
Dim db as Database
Dim rst as Recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset(stringasql,dbOpenDynaset)
...
...
...
...
rst.Close
Set db = Nothing
E' il modo giusto oppure dovrei fare il Close e il Nothing di tutti gli
oggetti?
Bye
--
Andrea

 oggetti?
Dato che VBA/DAO hanno più che uno bug nel trattamento del
sblocco di memoria preferisco ad usare tutti e due - come
molti programmatori.
rst.Close : Set rst = Nothing
Set db = Nothing
db.Close non da un errore ma nel caso che db si riferisce al db
corrente non è possibile di chiudere e non vale per niente.
Ce una buona spiegazione da MichKa:
http://www.mvps.org/access/bugs/bugs0005.htm
--
HTH
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

 ha scritto nel messaggio
news:9o7rlv$bhgpa$1...@ID-65136.news.dfncis.de...

Una risposta al tuo quesito la puoi leggere nel Sito Comune (link qui
sotto), Sezione General, nella FAQ di Sib intitolata "Access si riduce ad
icona invece di chiudersi".
Qualche mese fa nel NG ci si è chiesti se era necessario usare sia il metodo
Close che settare a Nothing tutti gli oggetti aperti prima di abbandonare
una routine. Anche in considerazione a quanto dice l'help circa Nothing, si
arrivò alla conclusione (a mio parere giusta) che era necessario, per
liberare la memoria, alla fine della routine di settare a Nothing tutti gli
oggetti precedentemente aperti, ma che poteva ritenersi ridondante far
precedere tale settaggio dalla chiusura degli oggetti.
Dopo tale discussione io che, alla fine della tua routine di esempio, ero
abituato a scrivere:
rst.Close
Set rst = Nothing
db.Close
Set db = Nothing
mi sono limitato a scrivere solamente:
Set rst = Nothing
Set db = Nothing
senza avere problemi.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:gALp7.518$bf.1...@news.infostrada.it...

Innanzitutto ti ringrazio Roberto, ed anche Karl, per le risposte precise ed
esaurienti.
Ho letto la FAQ di Sib sul Sito Comune ed ho visto che fa riferimento anche
alla possibilita' che si creino loop in una funziona che richiama se stessa.
Mi chiedevo, e lo so che e' dispendiosa, ma e' sostenibile la ricorsione in
Access 97?
Venendo da Access 2.0 (senza possibilita' di utilizzo del treeview) ho
dovuto risolvere il problema della distinta base su n livelli con una
funzione, appunto, ricorsiva.
Qualcuno ha esperienza d'uso della ricorsione con Access. E' possibile
effettuare una gestione dell'errore con questa struttura?
Grazie
--
Andrea

 effettuare una gestione dell'errore con questa struttura?
Non e' che si creino loop da soli, io mi riferivo a errori nel codice. Non
errori di sintassi, che verrebbero prontamente segnalati, ma errori
concettuali, es se fai due funzioni che si richiamano a vicenda bisogna
verificare che ci sia comunque una uscita dal ciclo se non vuoi rischiare di
"allooppare" (passami il termine) il codice.
La ricorsione e' sostenibile in tutti i linguaggi di programmazione
strutturati, basta stare attenti all "vie di fuga" dal loop se le condizioni
di uscita non si verificano.
Tutti i programmatori hanno esperienza della ricorsione e, ovviamente, la
gestione degli errori e' sempre possibile.
Ciao
Sib
Sib