Newsgroup: it.comp.lang.visual-basic
Titolo: VB6 e applicazione gestionale funzionante in rete, problemi con la base dati

Ciao a tutti,
è la prima volta che mi trovo a dover scrivere una applicazione VB che
funzioni su rete locale.
L'applicazione client dovrebbe usare ADO, via ODBC, per accedere ad una base
di dati presente sul server e realizzata mediante Access 2000.
E' necessario che tutti i client in qualsiasi momento possano visualizzare i
record presenti nelle varie tabelle della base di dati. Alcuni di questi
possono però editare i dati. Dovrei implementare un blocco a livello di
recordset, in modo tale che possano essere accettate le modifiche sul
recordset soltanto da un client alla volta. Mentre questo client ha bloccato
il recordset, vorrei però che gli altri client potessero accedere alla
tabella (in particolare al recordset in questione) almeno in modalità di
sola lettura: anche se in questo caso vedrebbero ancora il recordset prima
delle modifiche. Potrebbero successivamente fare un refresh per vedere le
modifiche fatte appena prima dal client che ha bloccato il recordset (questi
nel frattempo salvando le modifiche avrà liberato il recordset dal blocco).
Ho sentito parlare di protezione recordset ottimistica/pessimistica.
Quale tipo di protezione recordset devo implementare per fare quello che mi
serve?
Queste protezioni recordset possono essere implementate solo con DAO o anche
con ADO?
Che tipo di parametri devo passare utilizzando il codice?
Nel caso, qualcuno può farmi degli esempi o 'spedirmi' su qualche sito web
con esempi?
Ringrazio anticipatamente per il supporto e fatemi sapere, nel caso, se
servono ulteriori dettagli circa l'applicativo.
Ciao



 wrote in message 8ne2pg$2lu$1...@pluto.sm.dsi.unimi.it...

con Ado si può aprire un recordset impostando il tipo di blocco
es:
dim cn as new adodb.connection
dim rs as new adodb.recordset
        cn.open "stringa di connessione"
        rs.open "fonte dati",cn,adopendynamic,adlockoptimistic
il parametro adopendynamic è il tipo di cursore che mi indica cosa
effettivamente posso fare e vedere con il mio recordset in questo caso
sono in grado di vedere tutte le modifiche fatte da tutti e posso fare
qualsiasi
modifica
il parametro adlockoptimistic indica il tipo di blocco (ottimistico) che
significa che il recordset verrà bloccato solo al momento del richiamo
dell'update.
adlockpessimistic invece blocca il recordset nel momento che impostiamo il
valore del primo campo (es: rs.fields(0)=10) .
In entrambi i casi gli altri utenti possono comunque leggere i dati

Il discorso della concorrenza in multiutenza è un pò complesso.
Comunque se non ha particolari problemi da risolvere, ti conviene lasciare
gestire a ADO i conflitti ed i blocchi dei record attraverso una  corretta
gestione degli errori da inserire nelle procedure create (on error goto...).
Si incaricherà ADO di bloccare o consentire le modifiche. Potrai anche
implementare procedure che visualizzano i dati più aggiornati, attraverso
metodi come "refresh" e/o "requery".
Ad ogni modo per bloccare il record in fase di modifica potrai usare il
metodo "recordset.edit" che consente comunque agli altri utenti di
visualizzare il record.
ciao


....mi confondevo con DAO.
Il metodo edit in ADO non c'è più. E' intrinseco in fase di assegnazione del
valore al
campo, es. fields("Nome")="Mario".