28/02/2024 - giadal ha scritto:
Ho messo una msgbox su
Private Sub Form_Error(DataErr As Integer, Response As Integer)
ma quando edito un campo mentre un altro fe sta modificando non entro in questa routine…non si genera un errore, solo non modifica allora volevo capire se posso intercettare la cosa, l'unica cosa che accade è il beep del pc, non vedo neanche l'icona di blocco…
se hai bloccato il record per definizione non puoi operare sul record finchè non si rilascia il record. vale per la modifica e vale per l'insert in quanto sembra che il blocco, in access, opera su tutta la tabella (e non so se opera anche sulle tabelle collegate), pertanto non puoi generare un errore di duplicazione chiave (come da te riscontrato: Il mio problema è che il secondo fe non riesce a modificare ma non ho errore, quale evento posso intercettare x dare un messaggio ?), saltando di fatto (se non rendendola inutile) l'istruzione del messaggio di errore.
domanda: come hai bloccato il record? il web è stracolmo di questa problematica, suggerendo di avviare una query di update per bloccare il record lato 1 o i record lato molti con un flag (spesso identificati da username).
questo ti permette di inserire il record ma devi fare attenzione affinchè il la chiave non sia duplicata; in questo caso l'esempio di alex ha senso. l'utente A inserisce il record 30 e lo blocca, l'utente B non puo' modificarlo perchè il flag non è NULL, l'utente C prova ad inserire il record 30 (puo' tentare di farlo perchè la tabella non è bloccata) ma riceve l'errore di violazione di chiave e può scegliere, tramite messaggio, se annullare l'inserimento o incrementare il valore della chiave per inserire un altro record.
Adesso la risposta alla tua domanda nel caso di modifica contemporanea: se flaf not null allora messaggio “pippo o un altro utente sta lavorando sul record, vuoi attendere che finisca? [si] [no]” altrimenti (nessun flag) lacia query di blocco (update … flag=[pippo]) e vai in edit.