PDA

Visualizza la versione completa : [VB;ADODB] UPDATE RECORD senza COLLISIONI


tomhead
10-09-2002, 18:04
ciao ragazzi,
vi spiego meglio il problema:
io ho un programma ke ho installato su diversi client ma il database è unico.

Al momento ke un utente modificasse un record,vorrei le sue modifiche non andassero in collisione ad un altro utente(se x caso sta modificando lo stesso record).

Vorrei ke colui ke modificasse x secondo il programma gli segnalerà ke il record è stato aggiornato da qualcun altro ...

come posso fare?

Grazie

darkblOOd
11-09-2002, 10:45
guardati i lock dei recordset.

Servono proprio per gestire questi tipi di casi

Ci sono i lock ottimistici, pessimistici e di tipo batch

:ciauz:

ChReAn
11-09-2002, 12:01
Usa le transazioni, Luke. :adhone:

Prova a sfruttare i metodi BeginTrans, CommitTrans e RollbackTrans dell'oggetto connection.
Credo che sia proprio cio' di cui hai bisogno.

darkblOOd
11-09-2002, 12:31
Originariamente inviato da ChReAn
Usa le transazioni, Luke. :adhone:

Prova a sfruttare i metodi BeginTrans, CommitTrans e RollbackTrans dell'oggetto connection.
Credo che sia proprio cio' di cui hai bisogno.

già, ammesso che non vengano lanciate 2 commit contemporaneamente sullo stesso record....

ChReAn
11-09-2002, 12:53
Originariamente inviato da darkblOOd


già, ammesso che non vengano lanciate 2 commit contemporaneamente sullo stesso record....

Ora non ricordo di preciso, ma mi pare che i recordset in VB vengano aperti di default con un lock ottimistico... Quindi la transazione si dovrebbe occupare del lock, o sbaglio?

darkblOOd
11-09-2002, 13:34
Originariamente inviato da ChReAn


Ora non ricordo di preciso, ma mi pare che i recordset in VB vengano aperti di default con un lock ottimistico... Quindi la transazione si dovrebbe occupare del lock, o sbaglio?

no mi ricordo bene neanch'io ma mi sembra che il lock usato di default non ti preveniva un possibile inconveniente.

Sta a lui cmq trovare la strada migliore per risolvere il suo problema, basta vedere come si comportano i lock, le transazioni e far quadrare il tutto.

:ciauz:

tomhead
11-09-2002, 14:47
grazie ragazzi,
ma il mio problema è diverso il 1° utente apre diversi recordset ed io li kiudo tutti. al momento della memorizzazione devo verificare se qui record hanno subito variazioni.

ho risolto in questo modo:
ho creato una matrice di ADODB.recordset dei record aperti così al momento della memorizzazione confronto la matrice memorizzata con i DB ....

Loading