Newsgroup: it.comp.lang.visual-basic
Titolo: Gestione rete e crash PC

Cortesemente qualcuno mi può aiutare?
Vi spiego il problema:
Devo gestire la numerazione dei documenti tenendo presente che il programma
deve funzionare in rete.
Al momento il flusso è il seguente:
Registrazione Documento
1 - Controllo Flag 'Registrazione in corso' nella tabella 'Controllo Rete'
2 - Se True  significa che un'altro PC sta registrando un nuovo documento
per cui viene dato un messaggio di attesa.
3 - Se False invece imposta il Controllo Flag 'Registrazione in corso' a
True in modo da inibire l'accesso alla procedura agli altri PC.
4 - Viene letto l'ultimo numero documento registrato e generato quello nuovo
(aggiungendovi 1).
5 - Aggiornamento campo contatore ('Ultimo Numero Documento') con il numero
appena generato.
6 - Registrazione del nuovo documento nella relativa tabella con gli estremi
appena generati.
7 - Ripristino Flag 'Registrazione in corso' a False con conseguente sblocco
della procedura.
In questo modo ,credo abbastanza veloce, si dovrebbe avere la certezza che
non vengano generati numeri doppi.
Il problema che non riesco a risolvere è relativo ad un eventuale crash di
un PC durante l'esecuzione della procedura.
Se ad esempio il PC si spegne dopo il punto 3 cioè dopo avere impostato il
Flag  'Registrazione in corso' a True senza reimpostarlo alla fine a False
la procedura di registrazione documenti resta di fatto bloccata per sempre.
Come posso fare (al momento del controllo al punto 1) a distinguere tra un
Flag  'Registrazione in corso' = True corretto in quanto un altro PC sta
registrando un nuovo documento da uno invece derivante da un crash di un PC
che non ha completato la procedura?
Forse la soluzione è più semplice di quanto sembra ma dopo due giorni di
prove non so più che pesci pigliare.
Spero di essere stato abbastanza chiaro.
Grazie in anticipo a chi mi può aiutare.
Roberto

 ha scritto nel messaggio
news:mUcr6.6078$Z%1.24...@news.infostrada.it...


Registrazione Documento
]zac[

 wrote in message
news:xZkr6.8071$Z%1.29...@news.infostrada.it...


(ad ex l'indirizzo ip)
]zac[

 True in modo da inibire l'accesso alla procedura agli altri PC.
[...]

possibile.
]zac[

 s.o. del client lo chiude automaticamente, il server non c'entra niente.
[...]

Comunque per gestire l'unicità di un contatore basta il dbms...
Nel caso di DDT, fatture ecc. i problemi non sono solo quelli, debi tenere
conto della multi utenza (piu' persone che emettano lo stesso docuemento),
che non ci devono essere buchi nella numerazione, il numero e la data del
documento deve essere congruente col precedente e col successivo, ecc.
Salve
                Dbg

 crash.
se usi l'ip della macchina (era solo un esempio) non è l'istanza del
programma a tracciare il lock, ma la macchina.
per incrementare un contatore si può utilizzare un timeout di 10 secondi
(stando largo), perciò i client in coda al max attendono 10sec, dopodichè si
mangiano il lock
Nota finale per Alfonso Moscato:
sono anche io del parere che la soluzione migliore sia l'utilizzo di un db
(questa è proprio la soluzione da me adottata per gestire fatturazioni, ddt
etc), ma dipende anche dalle soluzioni che uno vuole/deve adottare.
Ciao, M.

Per il momento grazie a tutti.
Poichè sono un quasi principiante non intervengo nella discussione perchè
prima devo capire bene i vostri consigli.
Ciao Roberto