Newsgroup: it.comp.appl.access
Titolo: Spingere Timer fino al collasso

Comincio un po' a diventare intollerante circa la gestione dei timer di 
Access, che non � candidato per questo genere di cose perch� ha peculiarit� 
ben diverse.
Esempio:
- controllo aggiornamenti periodici
- ftp programmatici al verificarsi di certe condizioni
diciamo che per i primi due il timer � dell'ordine di 2 ore, 10 minuti
- servizio notifica query di sql (non ho approfondito di cosa si tratta) ma 
mi sembra molto interessante
- notificare all'utente qualunque cosa al verificarsi di condizioni simil 
messaggistica interna senza cdo o outlook. Es. un admin modifica un dato su 
db sql questo dovrebbe scatenare l'evento per gli utenti sales che 
visualizzi qualcosa
- e la lista potrebbe allungarsi
- in pratica una lista di mini"servizi"
Che suggerimenti avete?
Credo che di soluzioni ce ne siano molte, ma c'� un problema: anche un solo 
timer da 10000 ms � in grado di chiudere inesorabilmente access se � 
impegnato in elaborazioni senza doevents (es. le query pass-through mai 
asincrone - ho aggirato il problema con  cnn.Execute lngRecordEsaminati, , 
adCmdText + adAsyncExecuteadAsyncFetchExecute).
Grazie
Daniele

OneEDP ha scritto:
Forse non ho ben capito il tuo problema.
Posso rivangare una mia esperienza, era VB ma fa lo stesso.
Avevo ereditato una applicazione che non so per quale malato motivo 
l'estensore aveva sviluppato con ben 5 Timers. La caratteristica del 
timer e' che scatta comunque a tempo e genera, se mi passi la 
associazione, una specie di multithreading che natualmente crea non 
pochi problemi quando la tua elaborazione e' pensata sequenziale.
Soluzione. Un solo timer con all'interno un minimo di logica, 
fondamentalmente un test su un semaforo, se il test  falliva chiudevo la 
routine altrimenti verificavo quale azione era da intraprendere.
--
ac


Come ti dicevo, sebbene si possa ingegnerizzare tutto accentrando i vari 
mini servizi in un unico timer, il problema � che da solo produce overhead 
nello stack delle chiamate e access si impalla inesorabilmente soprattutto 
se � impegnato in altre operazioni "sequenziali" (ti ho fatto l'esempio 
delle query che ti spingono a prenderti molti caff�). se poi il pc � 
vecchiotto addio.
C'� via d'uscita? Con Access credo di no.
Grazie
Daniele

 C'� via d'uscita? Con Access credo di no.
Mi pare di ricordare che sul sito comune (o in alternativa "The Acsess web", 
"DonKarl", "@Alex")  fosse pubblicata un'implementazione via API  di un 
Timer alternativo a quello standard di Access.
Hai gi� trovato/provato ci�?
Ciao: Oscar


Non ho trovato nulla se non un contatore 

 se ï¿œ impegnato in altre operazioni "sequenziali" (ti ho fatto l'esempio 
Forse non mi sono spiegato bene. Quello che ho riportato consente di 
evitare cio' che descrivi. E' richiesta un minimo di "logica" in piu' 
nella routine di temporizzazione. Normalmente sono abituato a confinare 
i vari servizi in funzioni o classi, l'accentramento su una unica 
routine e' quindi riferibile solo a qualche istruzione di test che si 
occupa di chiamare il servizio solo e soltanto se il sistema e', in quel 
momento, "idle".

 e', in quel momento, "idle".
Premesso che anche io ho la tendenza ai moduli di classe.
Il problema sussiste. L'accentramento che specifichi l'ho compreso.
Si tratta di un "gestore" delle varie chiamate a questo o a quell'altro 
servizio.
Il problema � che diventa Access diventa instabile anche con quell'unico 
timer di quell'unica form se il timer � troppo breve (1 - 5 minuti)
O forse non ho ancora centrato?
Grazie
Daniele

> Hai gi� trovato/provato ci�?
Ma che c'hai, query da minuti ? Minghia
Beato te, vor di' crienti grossi
Certo che ti attacchi ad un db scarso se non permette le query asincrone
Che db e' per curiosita' ? (Hi hi hi hi hi, poi spedisco 'sto 3d su 
it.comp.as400 cosi' si incacchiano un po')
Ciao
RobertoA


Sotto pseudo mentite spogli gi� mi conoscono.
Diciamo che troverai palese difattismo nei confronti delle piattaforme non 
as400.
Ho provato con discorsi pi� costruttivi ma c'era solo patteggiamento e non 
cooperazione. Nessuno ambiente � perfetto.
E comunque per onest� le asincrone se fanno con as400 dipende da come le 
richiedi con ado o con qbe
Ciao 

Questo problema nasce proprio per il fatto che non si può lavorare in
MultiThread...
Hai VB6...?
Se si, sviluppa un EXE(se non hai necessità di FeedBack o una DLL se
ne servono) che chiami su TIMER in modo ASINCRONO, lui/lei si occupa
di fare il lavoro sporco, non impalli ACCESS e tutti stiamo
tranquilli...
;-)
Non sottovalutare questa mia proposta tecnica.
Quando parlate di "Classi" non fatelo solo per dire che usiamo le
classi... in questi casi non serve a nulla... la OOP si dovrebbe usare
con il buon senso a 360°... ma tu con i TIMER la usi a 90° quindi il
rischio è reale...
;-) mi è venuta una battuta spontanea... sopportate è quasi Natale e
gli asini iniziano ad essere in OvreLoad...
@Alex

OneEDP ha scritto:


Vedi se va bene questo:
http://support.microsoft.com/kb/180736/it
--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Daniele
Ho una applicazione Access (e' un gestore di video) che usa il timer e' 
non mi ha mai dato problemi. E siamo grosso modo nella tua situazione 
poiche' faccio cose diverse a seconda che il file muldimediale sia 
"running" o meno. Il timer e' impostato a 500msec.
-
ac

 ac
Quindi un uso ancora pi� spinto.
Ma per quale ac Access si blocca?!
Tks 

 @Alex
Allora guadiamoci le spalle e evitiamo i 90�! /-)
... e meno male che parli di natale...
Grazie
Daniele 

 Ma per quale ac Access si blocca?!
Memore dei problemi avuti con VB non ho ripetuto l'esperienza in access 
e quindi non so se il comportamento fra i due sistemi e' lo stesso.
Come dicevo nel primo post il timer scatta anche se il sistema sta 
facendo altre cose e questo puo' portare allo stack overflow. Deve 
essere tua cura cortocircuitare tutte le chiamate di timer che avvengono 
in momenti non "idle".
--
ac

 timer che avvengono in momenti non "idle".
Del tipo:
OnTimer: 500 ms
Mr Access sei impegnato? (bella domanda)
S�: ritenta sarai pi� fortunato
No: esegui come segue
Select Case
    Case 1
    Case 2
    Case 3
    ecc..
End Select
La domanda nasce spontanea....

 
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 La domanda nasce spontanea....
Esatto. E' dal primo post che avevo tentato di esplicitare ;-{)
Tra l'altro se lasci al servizio il compito di decidere puo' essere 
anche meglio
--
ac

 sviluppo...
access serve per fare sviluppo ed a tempo perso gestisce anche i dati.
Come sempre Albert e' il faro.
--
ac


Dagli all'untore. :-)
Penso che pi� di uno con l'affermazione "non � un ambiente di sviluppo"... 
qualcosina dal suo punto di vista potr� puntualizzare...
In linea di principio vba non n� vb6 n� 
vb.net
.


 anche meglio
La domanda non � chi �? Ma pecch�?
Rispondere a "Mr Access sei impegnato?" credo non sia affatto banale 
richiede un monitoraggio piuttosto capillare del log dei lavori.
Posso pure confezionare una classe, ma gli alunni sono tanti.
Grazie, alla fine non ho molta scelta.
Ciao
Daniele 

 
eh!
qui, effettivamente, un po' me la sono cercata...
:-)
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 sviluppo...
... Access questo sconosciuto ...
Ciao: Oscar 

 
http://support.microsoft.com/kb/180736/it
Bravo: a quell'esempio mi riferivo   ;-)
Ciao: Oscar 


Grazie per la segnalazione,  ma con AddressOf penso che renderei 
potenzialmente tutto pi� instabile, e comunque non risolverei il problema.
Ciao 

 wrote in news:4ae72b58$0
$1105$
4faf...@reader1.news.tin.it
:

cvd 
^^


 Paolo opg
csip
^^
Ciao: Oscar

 
questa mi manca...
cosa vuol dire?
