Newsgroup: it.comp.lang.visual-basic
Titolo: ancora ingrippato con conflitt e locktype

scusate se insisto, ma stavolta sto per sparare sul computer... !!
allora... ho bisogno di sapere solo un paio di cose... (veramente avrei
bisogno di saperne 100, ma mi accontento di un paio...)
sto provando ad aprire, da due vb project diversi (per ora non ho ancora
compilato) lo stesso database, poi apro un recordset e ci metto dentro TUTTA
una tabella.
il recorset è aperto con lock ottimistico (non batch)
non ho messo quello pessimistico perche non si puo usare con cursori lato
client. e io per ora uso solo quelli. piu in la farò le prove anche con il
lock pessimistico.
ora, apro il record, mettedoi dentro tutta la tabella, poi modifico 2 record
soltanto...
nel secondo file eseguo la stessa identica operazione. apro il recordset, e
modifico 2 record.
rst.open "Principale", [...], openstatic, lockottimistico,adcmdtable
(sintassi non precisa ::))))
1 rst.absoluteposition=2
2 rst("Anno").value=1990
3 rst.absoluteposition=3
4 rst("Anno").value=1991
5 rst.update
(che poi è lo stesso che faccio con il primo file)
bene. secondo quello che dice sia la guida, sia il libro di Balena, dovrebbe
darmi un errore (quando provo a modificare dal secondo file) del tipo "il
record è bloccato dal signor X".
questo perche con il lock ottimistico il bloccaggio avviene quando faccio
.update (per la prima volta).
in realta, non mi esce questo tipo di errore, ma mi esce un altro errore.
alla riga 3, mi dice "impossibile trovare la ria. forse è stata eseguita
un'operazione da un altro utente."
il che piu o meno è vero... l'altro programma (il primo) ha effettuato delle
modifiche e NON ha chiuso il recordset.
ovviamente, quando chiudo, le modifiche effettuate dal primo pogramma
restano nel DB, mentre quelle del secondo programma (che non è riuscito ad
arrivare ad update) non restano...
in teoria fa quello che mi serve, perche, in un modo piu o meno barbaro,
sono riuscito a capire quando un recordset è bloccato.
ma io vorrei sapere perche questo errore me lo da quando cabio la proprieta
absoluteposition, e perche non lo rileva alla riga 2, come sarebbe corretto.
qualcuno ha qualche idea ?
grazie
MarioH

 absoluteposition, e perche non lo rileva alla riga 2, come sarebbe
corretto.
L'errore te lo dà quando cerca di salvare i dati sul recordset, cosa che non
avviene quando scrivi nel campo, ma durante la update.
Per quanto (poco) ne so, ADO esegue una update implicita quando cambi record
dopo avere modificato il valore di uno o più campi, quindi ti dà errore nè
più nè meno che se avessi fatto un update prima di cambiare
absoluteposition. [ovviamente se ho detto una stupidaggine correggetemi]
Con DAO il comportamente sarebbe diverso, perchè se non fai una update
esplicita e cambi record, DAO ignora quello che avevi scritto nei campi.
Anche lì però l'eventuale errore in caso di locking sul record ce l'hai solo
durante l'update.
Morale? Riprova, sarai più fortunato. ;-)
Ciao
*Roby*
P.S.
Ma usare il tag [?] proprio mai, eh? E sì che tu sei un frequentatore
abituale del NG, ormai dovresti avere imparato... :-)


Esatto.
ciao
ugo

 ha scritto nel messaggio
news:9onrg3$eapqd$1...@ID-70152.news.dfncis.de...

Gli aggiornamenti alla tabella come avvengono?
Prima li aggiorni con il primo file
e poi con il secondo
oppure tenti di farlo in contemporanea???
Ciao fammi sapere Roberto - Syd


beh in contemporanea non ci riuscirebbe neanche Flash, il dito piu veloce
della Silicon valley... ::))))
in pratica faccio così:
1: Programma 1: metto tutti i record della tabella in un recordset
2: Programma 2: metto tutti i record della tabella in un recordset
3: Programma 1: modifico un paio di record, e faccio update
4: Programma 2: modifico un record, poi passo ad un altro record, e mi da
l'errore.
MarioH


beh in ralta mi hai dato un'ottima notizia. in pratica sono riuscito a
capire quando un rcord è bloccato.
ora provo a modificare UN solo record, e vediamo che errore esce... in ogni
caso a me non interessa piu di tanto se non esce l'errore che indica su qale
macchina è bloccato il record, a me basta sapere che è bloccato...
eheh passettino dopo passettino, little step by little step, sto riuscendo a
capire come cavolo funzionano i multiutente... ::))))
MarioH
