Newsgroup: it.comp.lang.vo-clipper
Titolo: Utenti che apro un file dbf condiviso

Ciao a tutti,
ho bisogno di un'aiuto su come visualizzare gli utenti che apro in rete un
file dbf.
Grazie
Paolo Russignan

 ha scritto nel messaggio
news:e4fbf3$jir$1...@newsread.albacom.net...


 ha scritto nel messaggio
news:446ba48d$0$36931$4faf...@reader3.news.tin.it...


 ha scritto nel messaggio
news:e4h76n$dqj$1...@newsread.albacom.net...


>> penso possa funzionare, ma non l'ho mai implementato
Ciao Massimo ,
  avevo implementato una cosa di questo tipo e sembrava funzionare poi 
per impegni e per un po di pigrizia ...c'e' sempre un po' di 
preoccupazione nell'inserire qualcosa di nuovo (non proprio 
indispensabile e in funzioni di base) in ciò che funziona bene... ;-)
il sistema è relativamente semplice :
si aggiunge una tabella con i campi 'tabella' 'record' 'utente' 
indicizzata per tabella + str(recno()...)
nella funzione che penso tutti noi abbiamo per controllare le aperture 
dei file si mettono due funzioni
funzione 1) agisce se il lock va a buon fine fa una seek sulla tabella 
di controllo per nome tabella str(recno...) se trova il record : lock e 
sostituisce il nome dell'utente, altrimenti crea il record con tabella, 
recno() e nome utente
funzione 2) agisce  se il lock non va a buon fine : controlla la tabella 
con una seek e ci dice chi blocca il record...
non credo esista il problema dell'utente che è andato in crash perchè in 
questo caso il lock va a buon fine ed il record sulla tabella di 
controllo viene aggiornato con il nuovo utente...
magari prevedere qualcosa che ogni tanto azzera la tabella di controllo
ma potrebbe avvenire in fase di manutenzione...oppure al riavvio del 
server....
solo per i famosi 2 cent...
saluti a tutti
andrea


 ha scritto nel messaggio 
news:e4fbf3$jir$1...@newsread.albacom.net...


Potresti creare un file di log dove scrivi tutte le transizioni che 
avvengono senza compromettere
direttamente il DBF dove risiedono i dati e qualora interessi capire cosa è 
successo basterebbe
interrogare il log.
Se utilizzi i DBSERVER la cosa si semplificherebbe moltissino in quanto ti 
basta creare una tua classe che eredita
dal DBSERVER modificando i metodi Fieldput, Append , delete (forse 
basterebbe la commit ) ecc aggiungendo il
codice per scrivere il tuo LOG.
Sicuramente per le operazioni di scrittura e cancellazione si allungano i 
tempi ma le letture resterebbero identiche e poi
scritta una volta la tua classe non ci penseresti più.
Naturalmente questa è solo una idea di partenza.
Ciao Alessandro. 

 ha scritto nel messaggio
news:446c3563$0$14789$4faf...@reader4.news.tin.it...


 solo per i famosi 2 cent...
certo, eccone altri 2


 nemmeno pulizie programmate
si... come sopra... quell'utente è in attesa di risposta ma gli altri ?
Cosa c'e' che non va in un sistema di pulizia al riavvio del server per 
esempio o in fase di manutenzione ?
forse non ho spiegato bene il metodo che intendevo...
->tabella clienti.dbf record 1345 utente MORATTI
1) apre la tabella raggiunge il record (seek ecc) prova a fare il lock()
    a) [ lock riesce] -> apre controllo.dbf fa una seek su nome  			 
tabella+str(recno)
         a1) se lo trova mette il nome nel campo utente -> MORATTI
         a2) se non lo trova aggiunge un record con nome tabella 
Clienti 		    record 1345 utente MORATTI
         a3) toglie il lock in scrittura/append
         a4) continua le operazioni previste
    b) [lock non riesce] apre controllo.dbf fa una seek su nome  			 
tabella+str(recno)
         b1) legge il nome dell'utente ed avverte che l'utente MOGGI 
stà 		    bloccando tutto :-)))
         b2) in base allo risposta torna ad 1) o esce...
.....solo per esercitare il pc biologico tra le orecchie... :-)
saluti
andrea


ottimo - giusto !
però i metodi da sistemare sono i Lock ed Unlock del DBSERVER
(e poi bisogna rinunciare ad usare la DBUSEAREA)
mmm... ci penso
ciao
MB

 mmm... ci penso
Si certamente ,cambia poco , se crei la tua classe poi surclassare tutti i 
metodi del DBSERVER.
Riguardo alla DBUSEAREA dovresti dare una occhiata agli RDD come funzionano 
, non conosco
bene la cosa ma penso si possa fare la stessa cosa.
Ciao Alessandro.