Newsgroup: it.comp.lang.visual-basic
Titolo: [Teoria] Concorrenza MSDE

Io mi ponevo il seguente quesito/dubbio
da spippolatore che ha sempre prediletto access per scopi pratici (e perchč
via web č comodo)
Adesso č un po di tempo che spippolo con msde ma la mia formazione teorica
un po vacilla
Esempio di accesso multiutente
e di concorrenza
Leggendo e spippolando essenzialmente ho 3 "alternative"
Gestire la concorrenza con:
a) Tabella/flag semaforica (come detto + volte anche nel NG)
b) Cursori ado e gestione aventuali errori
c) Stored di msde e lasciar fare lui
ORA
io per i motivi di sopra ho sempre usato i cursori e gestito l'errore (...e
continuo a farlo)
MA
faccio bene a far cosě con MSDE che č enormemente piů potente di access
e che č un vero "database" ???
La classica situazione:
Pippo e Pluto leggono il record
Pluto decide di Cancellarlo
Pippo di modificarlo
Come si gestisce vantaggiosamente in intranet con VB6 e MSDE ???
Attendo lumi!
Grazie!
-- 
------------------------------------------------
Il Wodkino Nazionale č a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
:-)

 c) Stored di msde e lasciar fare lui
ELOGIO DEGLI ERRORI
A mio parere IL metodo corretto č il b, nel senso che a) e c) sono 
"reinvenzioni dell'acqua calda". Gli errori sono una "feature" molto potente 
e spesso scarsamente compresa e mal utilizzata: si passa dall'eccesso di 
inserire una gestione errori anche laddove non ce ne sarebbe alcun bisogno 
(perche li gestice la prima procedura dello stack di chiamate) a quello di 
non gestirli mai con l'effetto e un qualsiasi errore ti fa chiudere 
l'applicazione oppure lascia dei file aperti creando problemi al successivo 
accesso...
Un volta capito il meccanismo di propagazione, il cirterio č semplice: gli 
errori vanno gestiti quando serve, cioč sui "confini" dell'applicativo, 
ovvero nei metodi chiamati dalla gui (i vari Command_Click ecc) e laddove in 
caso di errore ci sia da fare qualcosa di particolare (per esempio un 
rollback-ma spesso basta non fare il commit, se la connessione č stata 
aperta nella procedura stessa- o una scrittura su log o la chiusura 
anticipata di un file...).
Quello che puň essere piů antipatico č tradurre di errori in modo friendly 
(io non lo faccio; il piů delle volte disagio č minimo per l'utente - tanto 
non li capisce lo stesso!)
Riguardo MSDE la potenza sta nel generare gli errori il modo piů corretto, 
consentire il caching delle connessioni, consentire un locking piů 
efficente, ma per il programmatore non dovrebbe cambiare quasi niente per 
quanto riguarda la gestione degli errori.
Wodka, continua cosě!
Ciao
Elef 

 Pippo di modificarlo
uhm...
ma non stavi passando a .net?
in quel caso hai poche alternative: lavori in disconnesso, aggiorni con
store procedure o comando sql update.
in realtà sarebbe a mio avviso comunque consigliabile la seconda strada,
anche perchè la concorrenza non è solo "pluto cancella", ma "pluto
modifica". con l'update hai modo di stabilire quali "modifiche" rendono
inaccettabile il successivo aggiornamento da parte di pippo, e quali
invece sono ininfluenti.
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ma non stavi passando a .net?
solo per la parte web....
me lo tengo stretto VB6 per tutti gli altri programmilli!!!!!!!!!
Mica son scemo!
Per adesso mi studio il net e provo in casa varie cose....ma il pane rimane
in vb6!

 in vb6!
E' da tempo che sviluppo solo in .NET.
Per evitare la modifica in contemporanea in sql server 2000, in MSDE presumo 
sia lo stesso,
utilizzo la SET TRANSACTION ISOLATION LEVEL.
Una lettura nella guida in linea
ad "Hint per il blocco", utilizzando il termine "UPDLOCK".
Verrebbe una sintassi simile a:
 Dim tran As SqlClient.SqlTransaction
        Try
            Dim sqlUp As String = "UPDATE tblNomi WITH (UPDLOCK)
  SET Nome='" & Me.txtNome.Text
Meglio se si utilizzano le Stored Procedure.
Ricordo di aver letto parti di alcuni testi,
alla fine, per cercare di chiarirmi le idee, ho utilizzato due pc;
uno in debug, cosě bloccavo nella riga di codice che doveva evitare la 
sovrapposizione, e nel secondo solo l'eseguibile.
Modificavo le istruzione e verificavo i risultati.
Al pari con le prove appuntavo le risposte.
Ave
giuseppeD
---
p.s.
In considerazione dell'animo nobile dei vubbinettiani, ai persistenti 
vubbiseittiani non faremo mancare un piatto di minestra calda. 

 vubbiseittiani non faremo mancare un piatto di minestra calda.
eh eh eh....
Bontŕ vostra!