Newsgroup: it.comp.appl.access
Titolo: Numerazione "univoca" documenti in rete

Ciao a tutti
Ho un problema con la numerazione dei documenti:
Quando viene fatto un nuovo documento imposto il numero automaticamente
all'apertura della maschera e lo salvo quando si stampa il documento: in
rete se un altro utente stampa il documeno contemporaneamente succede che il
programma salva due documenti con la stessa numerazione. Come fare? Non
posso mettere chiavi nelle tabelle perchè diversi tipi di documenti possono
avere la stessa numerazione oppure numerazioni differenti.
Grazie
Ciao
Luca

 Luca
Leggi le istruzioni del comando dir nella guida. Prima del salvataggio
puoi fare una mappatura dei file già presenti e comportarti di conseguenza
per la numerazione.
Ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Re Artù ha scritto:

Il problema si verifica se un altro utente crea un numero nell'intervallo
di tempo che passa da quando tu crei il tuo numero a quando lo salvi.
Dovresti salvare il nuovo numero all'apertura della maschera, subito dopo
averlo creato, o impostarlo subito prima della stampa.
Meno tempo passa tra la creazione del nuovo numero e il suo salvataggio,
meno probabilità ci saranno che nel frattempo un altro utente ne crei uno
uguale.
Namor
-- 
namor at inwind punto it


 Namor
Ok. Questa è una strada. Però non mi posso fidare delle probabilità...
Cercavo una soluzione matematicamente sicura.
Per esempio dopo avere salvato il numero ricontrollo nella tabella per
vedere se nel frattempo qualcun' altro ha scritto lo stesso numero e in tal
caso cambio la numerazione al numero successivo. Ma anche così è sempre la
stessa cosa. Se questa seconda operazione viene eseguita contemporaneamente
sono punto a capo. Purtroppo ho un'azienda con 3 operatori che fanno la
stessa cosa e ogni tanto succede, nonostante i 2 controlli, che venga
inserito un documento doppio.
In un'altra azienda abbiamo sviluppato un programma con SQL e qui ottengo il
numero con una store procedure dal server, sempre univoca
Mah....la vedo dura....
Ciao
Luca

 Luca
In rete di soliio il numero si assegna nel momento in cui si salva
il record.
Dovresti gestire una tabella "Contatore" che va bloccata durante la sua
modifica e rilasciata dopo la registrazione del nuovo documento.
In Pratica:
Lock tabella "Contatore".
Campo "contatore" Tbl "Contatore" = Campo "contatore" Tbl "Contatore" +1
Campo "numero" Tbl "Documenti" = Campo "contatore" Tbl "Contatori"
Unlock tabella "Contatore". 
Ciao
Marco
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:baa6732c8d89db7c31d...@mygate.mailgate.org...

A questo non ci avevo pensato. Il ragionamento non fa una grinza.
Grazie
Ciao
Luca

Re Artù ha scritto:



E' il vecchio problema del Test&Set. Si dovrebbe fare con un unico
comando. 
Dovresti impostare il campo come chiave primaria, così puoi usare una
query per inserire il nuovo codice e ripeterla finchè non viene eseguita
correttamente (se tenti di inserire un codice già esistente ti darà un
errore che puoi intercettare).
on error resume next
do
err.clear
docmd.runsql "INSERT INTO tabella (ID) VALUES(" & dmax("ID","tabella") &
");"
loop while err.number>0
on error goto 0


 docmd.runsql "INSERT INTO tabella (ID) VALUES(" & dmax("ID","tabella") &
Scusa, mancava il "+1":
...& dmax("ID","tabella")+1 &....


 ha scritto nel messaggio
news:baa6732c8d89db7c31d...@mygate.mailgate.org...

Si funziona ma in questo modo blocchi gli altri
operatori nella fase di caricamento fattura e fino a che non
finisci di caricare la tua.
Io consiglierei invece una tabella dove ci appoggi
i numeri di fattura non utilizzati, ovvero, il numero lo
prendi ed aggiorni la tabella progressivi, se poi l'utente
non conferma la stampa allora rimetti il numero in questa nuova tabella.
Ovviamente e'da rivedere la procedura che prende il progressivo
che dovra' prima analizzare se esistono numeri da recuperare e poi
in caso negativo utilizzare la tabella progressivi principale.
sempre imho
bye :o)