por Itamar M. Lins Jr. » 22 Jun 2023 17:49
Usando DBF em rede, a TRAVA(LOCK) só ocorre durante a GRAVAÇÃO(REPLACE) seguido do UNLOCK, não fica a cargo do usuário decidir isso.
ISSO É BÁSICO DO BÁSICO EM REDES.
Sei que o assunto já deve ter morrido mas feriado sem nada pra fazer resolvi dar pitaco na discussão.. rs..
Concordo com Itamar, e também procuro sempre fazer assim.. Só Lock/replace/unlock na hora de gravar mesmo, decimos de segundo..
Só que nunca é tão simples. Também acho importante que quando um está alterando, outro
NAO PODE alterar, senao alguem vai perder a digitacao, e o que é pior, 1 deles pode nem perceber que perdeu o que acabou de alterar.
Lá na empresa volta e meia acontecia isso, porque na tela de edição estava os dados de antes (que eram salvos, cancelando a alteração do outro). Logo, bloquear antes
durante a edição, parece uma solução óbvia. Mas resolvia esse e causava outros problemas, como impedir os modulos automaticos da empresa de gravar alguma coisa, fora o cara se ausentar e largar o trem bloqueado.
Lá eu resolvi criando uma tabela separada só com o campo identificador (codigo/id/etc..), e fazendo o bloqueio nessa tabela. Assim eu impeço 2 usuários de alterar ao mesmo tempo e o registro principal na tabela principal fica liberado pras alterações automaticas do sistema que podem acontecer a qualquer momento.
É meio tosco mas quando tem um problema pra resolver, as vezes (ou quase sempre) vamos onde dá menos trabalho, menos linhas de código pra alterar, (vulgo bacalhau.. kkkk).
O problema do cara largar bloqueado ainda pode acontecer, mas não é tão frequente e eles se viram perguntando... É um problema menor.. Mas um deles perder a digitação e nem saber que perdeu, ou o sistema não poder realizar alguma alteracao silenciosa, era bem pior...