Newsgroup: it.comp.lang.visual-basic
Titolo: [Consiglio] gestire la modifica di un dato in concorrenza

Scusate, ma non sono riuscito a trovare un subject più adeguato..... :(
quindi vi espongo il mio problema.....se riesco....
allora:
in una tabella (chiamiamola 'Partite') ho alcuni records che hanno un ID
numerico ('partita') e un flag ('chiusa'), e sono inseriti in tabella
secondo un ordine ben preciso.
Sul programma vengono aperte N istanze di un form (dove N può variare di
volta in volta) che registrano su altre tabelle un insieme di dati legati al
numero di partita.
Ogni volta che  viene caricato un nuovo form, ricerco il primo numero di
partita disponibile nella tabella 'Partite' che abbia il flag 'chiusa' = 0.
Il problema è che ogni form può conludere le sue operazioni sul numero di
partita in momenti diversi (sono gli operatori a deciderlo), ma il flag
'chiusa' va messo a 1 solo quando anche l'ultimo form è passato al numero di
partita successivo.
Consigli?
P.S. ho già in mente un paio di modi, ma non ve li dico subito per non
influenzare il vostro pensiero....come da Gerry Scotti....
ciao e grazie

Non credo ti sia utile controllare l'id "partita" all'apertura del form.
IMHO ti conviene fare il controllo dell'ultima partita "chiusa" al momento
del salvataggio (quando un utente "chiude" la sua partita) ed assegnare in
quel momento il giusto ID partita.
Forse non ho capito...
Ciao, Luca.

 Ciao, Luca.
ciaociao

Scusa ma non mi è ben chiaro lo scenario, sarà per la copiosa birra del
pranzo che mi ha messo addosso "un po'" di stanchezza...
Ciao, Luca.

 Ciao, Luca.
ciaociao

Beh a priori saprai quanti belle costolette fa il tuo maiale, non
dico tu di persona, ma l'ufficio acquisti o il manager di turno
darà delle disposizioni che tu devi chiaramente incamerare.
il modo più logico che vedo, considerando che la partita può iniziare
oggi e finire chissà quando, che non tutta la partita viene lavorata
su una stessa linea, che non sono sempre gli stessi operatori a
lavorarci è quello di basarti sul dato di origine.
In origine sai che il maiale viene spezzato in 8, bene in ingresso
dati, creearai 8 record in una tabella temporanea nella quale
scrivi quanti pezzi devono essere lavorati.
in ingresos linea leggi il barcode del pezzo che entra, in uscita
previo confronto dell'id di ingresso (confronto forse superfluo
perchè il maiale morto non vola, ma lasciamo spazio alle
ipotesi più fervide) cancelli il record e sai quanti pezzi rimangono.
E sai quando la partita è chiusa, anche se così come lo hai descritto
non è certo uno scenario di dati concorrenziali.
-- 
Saluti
Andrea Moro

 non è certo uno scenario di dati concorrenziali.
In effetti la definizione non era corretta, ma non sapevo come rendere
chiaro il subject.... ;-)


boh se ho capito bene......
un possibile metodo
Partita: MaialeFelice001 (ih ih ih ...oink oink!)
CodiceABarre:Lampredotto12(va beh fammi scherzare va!)
Linea1: L
Linea2: L
Linea3: L
Linea4: D
Linea5: D
....
LineaN: D
Dove
L= Lavora
D=Disattiva
C=Conclusa
Lo start e lo stop la gestisci
A) maniera semplice che sicuramente il cliente non accetterà....spara il
codice a barre all'inizio della linea (con un codice parlante che identifica
la linea sarebbe ottimo)
ad es . Linea 3
Spara la carcassa all'inizio linea
LINEA3 da D diventa L
......e alla fine....DA L diventa C
Pronto per una nuova lavorazione...a quella linea non interessa più nulla
della partita e se ne aspetta un altra....
Il programma generale gestirà le partite....
Check ad ogni nuovo sparo per vedere che è aperto e che è chiuso....è una
query fai veloce! al limite velocizzi facendo il check della partita allo
sparo della pistola e flaggando un boolean "PartitaChiusa"... a quel punto
il check globale è solo su quelli con PartitaChiusa=False
B) I clienti son scassacazzi....devi capire solo dallo sparo finale a quale
partita si riferisce e al limite aprirne una nuova il resto rimane uguale
Damblè (e damVerd...) mi viene così senza stare a bacarsi tanto le palle con
la concorrenza et similia.....
pensala ad esempio come programmilli che via winsock aggiornano ognuno il
suo (e solo suo) campo di un record...basta che tu passi al winsock del
server "INIZIO CodBarMaiale LINEAprod".....e poi "FINE CodBarMaiale
LINEAprod" ....ad esempio.......
Saluti
P.s.
Per la fattura accetto anche pagamenti in salsiccie , salami e prosciutti!
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 Quotefix e altro:
http://www.martek.it/go.asp?portamia=4
Usr: ICLVB Pw: amici

 Il Wodkino Nazionale č a : 
www.martek.it


 prosciutti!
Certamente, quando passo dalle tue parti te li porto (quali sono le tue
parti?) ;-)
ciaociao

 :-)
mmmm. da che sito si scaricano i porti?? ;-)
ciaociao

> nulla della partita e se ne aspetta un altra....
Ok ... ma se non sa nulla il tizio di quello che sta lavorando, chi è che
sa quanti pezzi di ciccia deve fare sto caxxo di maiale?
Qualcuno ci deve essere ....
E se entra un pezzo di maiale sulla sublinea, qualcuno dovrà pur sapere
se è cambiato maiale o se è sempre lo stesso ... sarà che non sono
mai entrato dentro uno di questi posti ... ma mi è oink oink tenebra
la cosa.-- 
Saluti
Andrea Moro

 Andrea Moro
ciaociao

 assicuro che ne ho viste di tutti i colori....
Ehmm ... facevo il cuoco ;) Non per contraddirti, ma di mezzi maili
ne ho silurati un pň ... non tanti come 6 o 7 anni, ma ....
Il problema logico č che non capivo il tutto. E ti assicuro
che il fatto che tu abbia detto che ogni sub linea lavora lo stesso pezzo
č chiaramente piů indicativo che non tutti i discorsi fatti prima.
Ora a questo punto abbiamo 10 maili sulla linea ...
sub linea 1 stacca la coccia
sub linea 2 il prosciutto
sub 3 la coppa
sub 4 le salsicce
e via all'infinito ... pezzi che mi aspetto vengano messi in un ordine
ed escano in quell'ordine. Quindi il problema si risolve di fatto.
Tu vuoi sapere quando il maiale č completo. Premesso che devi
sapere a priori quanti pezzi deve fare un singolo maiale (ipotizziamo
un maiale zoppo e uno no) ... quando tutti i pezzi - indipendentemente
dal tipo - passano davanti al bar code registrano una riga e
contemporaneamente
con una qiuery incrociata del tipo quanti pezzi ho quanti ne sono passati
vai a sapere quanto ti manca per un dato maiale, cosa ci manca e chi
č l'intoppo. Per chiudere il lavoro maiale, semplicemente al raggiungimento
di tutti i pezzi, scateni una query di update che chiude.
Mi pare che il tuo problema fosse quindi chiudere il job e stop e cosě
lo risolvi
-- 
Saluti
Andrea Moro

 lo risolvi
Il problema è sapere quando le TUTTE sub-linee hanno cambiato partita.
Comunque ho trovato un modo che mi piace abbastanza, ora lo provo poi vi
faccio sapere
ciao e grazie

 Andrea Moro wrote:
io non ho lavorato(informaticamente parlando) per il sig.Rana
ma per una salumeria del posto si!
non so il mondo della "ciccia" ma il mondo dei salumi un po lo conosco!
Sgnam....
a parte le martellate che dovresti dare al tuo cliente...perchè dura un
sacco di fatica in più...ma casomai ha accordi con i sindacati per mantenere
posti di lavoro.....
Click....codice a barre letto....partita 1
ogni sublinea alla fine legge qualcosa?...se coincide sei sempre nella
partita 1.....cazzo al limite daglki un pedale da pianoforte che schiccia ad
ogni maialino arrivatoa destinazione!
tu dici .....uno legge un codice diverso...si cambia partita
MA e forse non ci spieghiamo
SE (ipotesi)
 il nastro trasportatore dei maialetti è unico
ALLORA(tesi)
la partita cambia per tutte le sub linee!
e devi solo aspettare per chiudere il record che tutte le sublinee facciano
biiip con il pedale di OK finito!
Nel frattempo puoi avviare un altro record per la linea più veloce
N.b.
la cosa funziona ma peggio anche all'"incovercio" (alla rovescia)...se sparo
il maialetto all'inizio della sublinea....come hai detto tu è peggio perchè
l'operaio potrebbe sparare il maialetto ed andare a fare pipì oppure a
lumare la segretaria dell'amministrazione in tal caso potrebbe segnare una
fine che fine non è della partita....
ma che costa mettere un pedale od un bottone alla fine della sublinea????
Al salumaio....in fondo alla linea c'era la bilancia....con una sola
operazione si pesava il prodotto (se non richiedeva stagionatura eh)...si
contavano i pezzi...si stampavano le etichette...si saldavano le partite etc
etc
Come dici tu era importante sapere  2 cose sole.....
quando si cambiava partita....per cambiare i totali dei pezzi da produrre,il
prezzo praticato a quel cliente etc etc...
e quando un pezzo arrivava alla fine.....per saldare le quantità, calcolare
tempi, sciupi, etichettare etc etc
Bye bye!
p.s.
ma a te da noia l'odore di 'sti posti?????I sacchi con gli aromi son
tremendi!!!
e l'ambiente?sembra di assistere ad una immensa autopsia!
A me da il voltastomaco....non ho mangiato prosciutto e salame per 2 mesi!
...e considera che tutte le volte che ci andavo scendeva il padrone (che
ogni tanto impastava anche lui)....e mi dava la mano!
La lavavo con il Vim ed ancora puzzava!!!
Bleah!


 Bleah!