Newsgroup: it.comp.appl.access
Titolo: contatore in rete problemi

ho creato un applicativo tipo protocollo con numerazione crescente in
automatico, il BE risiede sul server centrale mentre il FE su varie
postazioni.
Ho notato che spesso quando si inseriscono i dati da varie postazioni,
dove il contatore <<non automatico ma "="Inf" & "/" &
Format(IIf(IsNull(DMax("[numero_registro_int]";"[determine]";"[numero_registro_int]
like 'Inf" &
"/?????'"));1;Right(DMax("[numero_registro_int]";"[determine]";"[numero_registro_int]
like 'Inf" & "/?????'");4)+1);"00000") >> da il numero, alla fine
dell'inserimento non registra il record perche gia' registrato da un altro
utente.
Quello che chiedo è se sia possibile bloccare il numero contatore
all'inizio dell'inserimento dei dati nel record o qualche soluzione
alternativa.
grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 grazie
Devi minimizzare il più possibile il tempo che intercorre tra la creazione
del nuovo contatore e il momento in cui viene salvato in tabella.
Per esempio, non dovresti creare il nuovo contatore appena inizi ad
inserire un nuovo record perchè se l'utente sta 10 minuti per inserire i
dati, nel frattempo qualcuno potrebbe inserirne un'altro e prendersi lo
stesso numero dato che quello che hai appena calcolato non è ancora stato
salvato in tabella.
Se non ti serve conoscere il valore del nuovo contatore per inserire il
record, lo puoi calcolare sull'evento before_insert, appena prima che il
record venga salvato in tabella, altrimenti devi forzare il salvataggio
del record non appena creato il nuovo contatore (lasciando gli altri campi
vuoti), ma questo potrebbe darti problemi se la tabella origine dati è in
relazione con altre tbl con l'integrità referenziale applicata, perchè non
ti lascia salvare il record se non valorizzi le chiavi esterne, oppure se
hai impostato regole di convalida dei dati nella struttura della tabella.
Namor
-- 
namor at inwind punto it


 BB ha scritto:


e in pratica cosa mi consigli di fare?
posso metterlo come ultimo campo di inserimento nel record ?
Con before insert intendi dopo aggiornamento ? se si, che faccio tolgo la
formula da "valore predefinito e la metto nell'evento dopo aggiornamento?
-- 


bb ha scritto:




Non serve metterlo come ultimo campo perchè tutti i valori predefiniti
vengono calcolati subito non appena si crea un nuovo record.
before_insert = Prima di aggiornare
Si, togli la formula da valore predefinito e assegni il nuovo valore da
vba nell'evento "Prima di aggiornare" della maschera.
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 


namor ha scritto:





Accidenti!, così facendo, mi da errore nella formula 
Private Sub numero_registro_int_BeforeUpdate(Cancel As Integer)
="Inf" & "/" &
Format(IIf(IsNull(DMax("[numero_registro_int]";"[determine]";"[numero_registro_int]
like 'Inf" &
"/?????'"));1;Right(DMax("[numero_registro_int]";"[determine]";"[numero_registro_int]
like 'Inf" & "/?????'");4)+1);"00000") 
End Sub
e precisamente sui separatori ;
ho anche provato ad inserire prima dell'= il nome del controllo campo
"numero_registro_int" ma è la stessa cosa!
-- 


 "numero_registro_int" ma č la stessa cosa!
Va sul Prima di aggiornare della MASCHERA, non della casella.
E non puoi scrivere una formula che inizia con l'uguale cosě come la
metteresti in valore predefinito, devi scrivere un'istruzione vba valida,
cioč "controllo=formula".
Ti conviene mettere in una variabile il valore della Dmax(), visto che lo
richiami due volte, ne risulta anche un codice piů leggibile.
MaxCont=nz(DMax("[numero_registro_int]";"[determine]";"[numero_registro_int]
 like ""Inf/?????""");"")
Me.nomecasella="Inf/" &
Format(IIf(MaxCont="";1;Right(MaxCont;4)+1);"00000")
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 


 [cut]




niente! mi da sempre errore sui separatori ;  
-- 


 niente! mi da sempre errore sui separatori ;  
Si, in vba devi usare le virgole, non i punti e virgola per separare i
parametri delle funzioni.
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
