Newsgroup: it.comp.appl.access
Titolo: [Newbie] Aggiornare dati di tabelle condivise in tempo reale

Salve a tutti,
perdonate la niubbaggine ma avrei una necessità e spero che qualcuno di voi
possa darmi una mano.
Mi spiego:
In un piccolo ufficio abbiamo 3 PC (che chiamerò A, B e C), su ognuno dei
quali è installato Access 2003. C'è poi un altro PC che fa da file server
(che chiamerò D).
Su D c'è il back-end di un DB e su A, B e C ci sono i front-end collegati.
E' facile se non addirittura normale che gli operatori di A, B e C accedano
contemporaneamente al back-end su D, solo che non hanno i dati aggiornati in
tempo reale.
In pratica quando l'operatore di A inserisce un record (diciamo il record
nr. 80) l'operatore di B sul suo schermo ha ancora il record 79, e continua
ad avere il record numero 79 finchè non chiude l'applicazione e non la
riapre; a quel punto ha i dati aggiornati all'ultimo inserimento effettuato
ma capirete bene che non si può lavorare aprendo e chiudendo l'applicazione
ogni 3-5 minuti :-(.
Il quesito: desiderei sapere se c'è un modo, tramite query o altro e quindi
magari creando un pulsante in maschera - o addirittura un comando che
"autoaggiorni", affinchè i dati risultino sempre aggiornati su A, B e C.
Scusate il modo "contorto" in cui ho spiegato il problema ma spero mi
abbiate capito.
Un saluto a tutti.
--
Luisa


Non esiste un evento legato all'aggiornamento della tabella, se hai bisogno
di vedere aggiornati i dati ogni tot
devi mettereun tempo sul timer e fare un refresh
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

MA ha scritto:

Vai su opzioni e metti blocco record modificati cosi se il tuo collega 
entra in quella maschera e sta modificando dei dati se tu apri la stessa 
maschera non ti permette di modificarla. poi su intervallo aggiornamenti 
abbassa il valore.
Cosa importantissima me.refresh su tutte le maschere che usi.
Io ci lavoro da 7 messi un BE e 7 FE non è stato mai messo un doppio 
dato e non ho dovuto aspettare neppureun secondo per immeterlo.

 devi mettereun tempo sul timer e fare un refresh
Prima di tutto ringrazio sia te che Frabrizio per l'aiuto.
Ho operato così su PC-A:
Visalizzazione Struttura Maschera -> Proprietà Maschera -> Linguetta
"Evento"
ed ho aggiunto alla voce "Timer" un intervallo di 500 ms.
Alla voce Su Timer ho cliccato sui "tre puntini" :-) e si è aperta la
finestra di VB, alla quale ho aggiunto la voce Me.Refresh così:
Private Sub Form_Timer ()
Me.Refresh
End Sub
Salvato e chiuso il tutto, ritorno alla maschera.
Inserito un record su PC-B (io sono su PC-A) [il contatore record su PC-B
visualizza record nr.82]
Torno su PC-A e quindi sulla maschera ma, nonostante noti "qualcosa che si
muove" [e quindi il refresh], non si aggiornano i dati [il contatore record
su PC-A rimane su record nr.81].
Devo aver sbagliato qualcosa, ma cosa ?
Perdonatemi :-(
--
Luisa


Luisa se metti un requery non refresh ogni mezzo secondo la maschera diventa
innavigabile


Potresti far eseguire un requery della form in base ad un timer, ma credo 
che ci siano degli effetti collaterali non troppo desiderati, tipo la 
perdita di un filtro eventualmente applicato.
-- 
PBsoft di Gabriele Bertolucci
www.pbsoft.it


 innavigabile
Ho sostituito l'intervallo da 500ms a 5000ms.
Con
Private Sub Form_Timer ()
Me.Refresh
End Sub
non funzionava ugualmente.
Allora l'ho sostituito con
Private Sub Form_Timer ()
Me.Requery
End Sub
ed ora funziona ma vorrei capire, se ne avrete la bontà, perchè con il
Me.Refresh consigliatomi prima non andava.
Grazie.
--
Luisa

 Me.Refresh consigliatomi prima non andava.
Recupero la spiegazione dall'help del VBA di Access 2003:
"Il metodo Refresh aggiorna immediatamente i record contenuti nell'origine 
record sottostante relativa a una determinata maschera o a un determinato 
foglio dati in modo da riflettere le modifiche apportate ai dati in un 
ambiente multiutente."
"Il metodo Requery aggiorna i dati sottostanti una determinata maschera o un 
controllo contenuto nella maschera attiva rieseguendo una query sull'origine 
dei dati relativa alla maschera o al controllo."


 dei dati relativa alla maschera o al controllo."
Ti ringrazio (avevo già letto l'help :-) ma questo non mi aiuta di certo a
capire perchè il metodo Refresh non funzionava (dato che anche su google
avevo trovato parecchi post - su DB condivisi - che consigliavano il metodo
Refresh).
Era questa la mia domanda.
--
Luisa

 Era questa la mia domanda.
Con il metodo Refresh ottieni che i dati che stai guardando siano aggiornati 
con le modifiche fatte da altri sullo stesso record.
Con il metodo Requery ottieni che l'origine dati associata alla maschera sia 
recuperata nuovamente, quindi, nel caso in cui siano stati aggiunti o tolti 
dei record, con questo metodo che vedresti le modifiche riflesse sulla 
maschera.
Spero di averti aiutato di più.
