Newsgroup: it.comp.appl.access
Titolo: Chiudere una classe

Buonasera a tutto il NG.
Se io ho una classe che si chiama ad esempio "Transaction", per terminarla di solito uso scrivere:
---------------------------
Dim A as New Transaction
...............
.....
..............
Set A=Nothing
-------------------------
e con questo chiamo il Class_Terminate che fa quello che deve fare, inoltre libero memoria.
Senza che io scriva ogni volta Set A = Nothing (o qualsiasi altro voglia nome di variabile), può 
esistere un metodo per far fare ad un'eventuale Sub Close () (lanciata con A.Close) che si preoccupi 
di chiudere la classe e liberar memoria?
Mi verrebbe da dir di no, in quanto è impossibile che un oggetto si possa annullare con del codice 
eseguito dal suo interno, ma magari per le classi esiste un sotterfugio...
Grazie e Buon Natale ( e anche un felice Ano Nuovo ovviamente)
---------------------------
Michele (Giò)
joyl...@alice.it
 

 ha scritto nel messaggio
news:458836e3$0$22392$4faf...@reader2.news.tin.it...

Che io sappia (ma non ne so granché) vb e vba non hanno un garbage
collector. Perciò, covrebbe essere compito tuo.
Ciao.
eSQueL

Michele (Giò) ha scritto:

La classe viene distrutta quando viene distrutto il suo Contenitore,
quindi dipende da dove la dichiari, ma non è una bella cosa.... fossi
in te verificherei l'effettivo scatenarsi dell'evento terminate....!!!
In ogni caso non capisco.... se la dichiari a livello di Form, su
Unload la distruggi, se la dichiari a livello di Modulo standard non ha
nemmeno senso distruggerla se la tieni aperta per l'intera sessione di
Access...!
Se tu usassi le classi incapsulate, quindi classi che istanziano classi
ti accorgeresti che è sempre bene distruggere le variabili non usate
per evitare memory leak....!
Purtroppo VB/A tra le tante comodità ci ha regalato anche questa
brutta abitudine, che si accompagna con l'abitudine di non usare
l'Option Explicit.....
@Alex

 ha scritto nel messaggio 
news:1166561509....@f1g2000cwa.googlegroups.com...
La classe viene distrutta quando viene distrutto il suo Contenitore,
quindi dipende da dove la dichiari, ma non è una bella cosa.... fossi
in te verificherei l'effettivo scatenarsi dell'evento terminate....!!!
In ogni caso non capisco.... se la dichiari a livello di Form, su
Unload la distruggi, se la dichiari a livello di Modulo standard non ha
nemmeno senso distruggerla se la tieni aperta per l'intera sessione di
Access...!
Se tu usassi le classi incapsulate, quindi classi che istanziano classi
ti accorgeresti che è sempre bene distruggere le variabili non usate
per evitare memory leak....!
Purtroppo VB/A tra le tante comodità ci ha regalato anche questa
brutta abitudine, che si accompagna con l'abitudine di non usare
l'Option Explicit.....
@Alex
Sto usando questa classe per gestire in modo automatico e controllato le transazioni all'interno del 
mio db. Quando creo l'oggetto, ho l'inizializzazione del Workspace e del db, quando lo distruggo, 
verifico lo stato della transazione, la annullo se non è stata commissionata, e chiudo tutti gli 
oggetti pesanti.
Mi sembra un ottimo approcio per la standardizzazione e l'ottimizzazione del mio db.
Questa è l'ultima di una serie di omogeneizzazioni che sto facendo, e man man che ripasso il codice 
renderò il tutto a funzioni, sub e classi che fanno bene e senza errori un gruppo di istruzioni, 
senza star li ogni volta a pensare e a perdere tempo. Ovviamente la gestione della memoria avrà 
priorità elevata, ed è facile che fra mille Set ti scappi poi qualche Nothing.
L'obbiettivo quindi è racchiudere il più possibile gli oggetti pesanti (ad esempio i recordset) in 
oggetti che abbiano su di loro il controllo assoluto e collaudato, e le clsassi con l'evento 
Terminate sono delle ottime candidate a ciò.
per quel che riguarda l'Option Explicit, lo trovo più una comodità che un peso, e il suo uso è di 
rigore per me.
Scusami per questa lunga parentesi, ma mi piace esporre ciò che realizzo. Anche perchè se non vengo 
capito qui, non sarà certo la mia ragazza a starmi ad ascoltare.
Buone feste.
Michele 

 capito qui, non sarà certo la mia ragazza a starmi ad ascoltare.
Questa è veramente bella!!!!
-- 
Saluti Andrea
Access 2003 - Windows XP 

 Michele
Anche a te.
@Alex

 ha scritto nel messaggio 
news:1166610490....@i12g2000cwa.googlegroups.com...
Ma sinceramente con JET che è MonoTransazionale e sapendo che con un
file-sharing servono a poco direi che una classe forse potrebbe essere
un sofismo..., ma non mi permetto di valutare una cosa che non ho
visto.
Se la macchina su cui risiede il BE si pianta o si spengne durante il
commit di una transazione cosa speri di ottenere dalla tua transazione
aperta...?
Spero nulla, in quanto lato Server non c'è NULLA che possa dire a
chicchessia da dove riprendere....!
Questo è il senso della mia domanda sul perchè tenti di usare con JET
features da motore Server..!
A mio avviso la cosa migliore con JET è limitarsi alla gestione
Errori, in caso si MultiUtenza, di Update o Edit falliti...!
Cosa diversa se usi un vero motore Server, ma li servono altre
considerazioni.
Allora, la transazione innanzitutto non la utilizzo per complicarmi la vita.
Forse il motivo per cui l'adopero sarà anche banale o addiruttura esagerato per lo scopo, ma è 
maledettamente efficace. La transazione la utilizzo per validare una serie di modifiche a più 
tabelle del BE in un colpo solo(non esiste alcun server, ho BE e FE sulla stessa macchina, 
monoutente) una volta che le routine che modificano i dati sono andate a buon fine. La transazione è 
per me una garanzia che vengano eseguite tutte le modifiche, o che non ne venga eseguita alcuna. Se 
ne eseguo alcune e mi si pianta il programma, i dati vengono corrotti. Poi, vuoi proprio che si 
spenga il PC sul Committrans? Allora questa si chiama sfiga, e in questo caso remoto ho i BackUp e 
la mia persona a disposizione.
La transazione per questa funzione è caldamente consigliata dal manuale su Access che ho letto, per 
quello che ho integrato questo metodo sul mio db.
Si tutto può scappare.... anche la ragazza se gli parli di queste
cose...! ;-)
Io però non posso mai scappare quando comincia a vaneggiare su viaggi, regali, anelli..... devo 
restare lì, in atteggiamento Full Submission, ad ascoltare.
Michele

 Michele
@Alex

 Michele
@Alex

 
@Alex

 dell'argomento...!
Pfui? Il sarcastico sono io. "Let me"!
-- 
ac
y-1=x

 y-1=x
Giammai.... non vorrei rubare il posto a chicchessia proprio a
Natale...!
Ma scusa tu non eri di turno il 6 di Gennaio...?(non la 24enne però..)
@Alex

 ha scritto nel messaggio 
news:1166647936....@t46g2000cwa.googlegroups.com...
Grazie della doverosa nozione, pensavo fosse tutt'altra cosa..., dovevi
dirlo prima che parlavi di questo mi sarei risparmiato il prolungare
dell'argomento...!
Mi spiace averti fatto perdere del tempo (anzi, del carattere), ma pensavo che parlando di 
transazione, l'ignaro (mica tanto ignaro) lettore avrebbe puntato ai tre metodi sopra citati. Anche 
perchč non esistono solo in DAO, ma anche in ADODB, con la stessa funzione.
Ma alla fin fine, queste transazioni che io adopero, sono delle transazioni o vengono chiamate cosě 
tanto per diletto? Perchč se pensavi a tutt'altra cosa, significa che nella panoramica di Access 
esse hanno un ruolo marginale.
Ma poi un'altra cosa: ho trovato strano, a parte il sig. Cara che ha fatto un intervento semi OT, 
che nessuno a parte te si sia intromesso nella discussione per dire la sua. Queste transazioni sono 
cosě sconosciute?
Michele 

 Michele
Michele scusa ma la cosa è stata affrontata molte volte negli anni, e
ti parlo di anni, ma evidentemente non hai cercato... altrimenti
avresti capito da subito le mie osservazioni....!
La transazione che sia ADO o DAO è una transazione... e dovrebbe
essere fatta ServerSide, mentre con JET non è così, pertanto lascia
il tempo che trova anche il suo utilizzo...!
Non hai colto nel complesso l'ironia di fondo.... ma ti lascio fare
esperienza come è giusto che sia, anche con convinzioni parziali e non
sempre complete....
Ciao
@Alex

 @Alex
Ale, tu ti riferisci al libro di Ken Getz?
-- 
-- 
Massimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access

 Massimiliano Amendola
@Alex

 @Alex
-- 


 esse hanno un ruolo marginale.
Michele il concetto di transazione nasce ancora prima di access 
probabilmente gia' dalla "macchina di Turing". Non sono particolarmente 
d'accordo con quello che "sostiene" A. Baraldi  (serverside/jet).
La transzione la gestivo in modo "casereccio" anche con files 
sequenziali e questo parecchi anni fa. Il concetto di "consolidamento" 
(commit) o "ripristino"  (rollback) e' poi una delle funzioni di base di 
qualsiasi dbms che possa definirsi tale.
La necessita' di utilizzare una transazione e' di tipo logico e la loro 
"marginalita'" o meno e' funzione della logica applicativa. In un 
trasferimento di fondi bancario (logica applicativa) gestire i dati 
mediante una "transazione" non e' affatto marginale.
Questa e' abbastanza IT? ;<)
-- 
ac
y-1=x

 Cisa - Conferenza Italiana Sviluppatori Access
@Alex

 y-1=x
Secondo me stiamo dicendo la stessa cosa.... A.C. leggi bene, sostengo
solo che JET non lavorando ServerSide chiamarle Transazioni(nel senso
che devono avere) è ridicolo...!
Se poi per un programa locale possano essere di qualche utilità....
direi che dipende da come viene sviluppato e cosa deve fare.... ma
stiamo parlando di JET non andiamo a finire su quello che fanno le
Banche... perchè li dobbiamo parlare di Transazioni vere...!
Dai fai bello che l'età c'è....
@Alex

 Simpaticissimo.
Ciao MA, se era bravo quanto simpatico, il mio manuale dovrebbe essere stato un buon 
investimento.... Io mi sono trovato benissimo, anche a saltoni gli argomenti sono lo stesso 
comprensivi.
Buone feste.
Michele 

 Questa e' abbastanza IT? ;<)
Si, direi proprio di si. Mammamia, che polverone che ho sollevato! Perfino MA ha detto la sua.
Ragazzi, passate un buon Natale, una buona fine e un buon inizio (di ANO naturalmente)

 Ragazzi, passate un buon Natale, una buona fine e un buon inizio (di ANO naturalmente)
Pensa al tuo Michele...!
;-)
@Alex


Sicuramente bravo almeno quanto simpatico.
il mio non voleva essere polemico, ma seplicemente mi hai ricordato un 
autore di un libro che ho conosciuto.
Stop.


 ha scritto nel messaggio 
news:1166726043.8...@73g2000cwn.googlegroups.com...
Pensa al tuo Michele...!
Ho già provveduto ad indossare una cintura di castità difatti. Chi l'avrebbe detto mai che sarebbe 
tornata in voga........