VERIFICAR USUÁRIOS USANDO USANDO UM REGISTRO

PROSOFTSISTEMAS 15/05/2025 08:42:33
#504940
Tenho a seguinte situação
Numa retífica é aberto uma OS e colocado as informações do veículo na primeira etapa e após é feito a precificação, inclusão das peças e serviços que serão consumidos na O.S.
Porém, enquanto é feito a precificação outro usuário precisa acessar o registro gerado para ler as informações do veículo. O que está acontecendo é que as vezes esse segundo usuário que acessou, que teria como finalidade apenas visualizar informações, está precificando também ocasionando duas pessoas fazendo a mesma tarefa.
Os itens da precificação estão numa tabela Itens.
O que eu preciso que quando um segundo usuário acessar o registro da tabela de orcamentos eu pudesse verificar se já existe algum usuário e, se sim, qual username está usando esse mesmo registro, para que eu possa bloquear via código a edição do registro que foi carregado apenas para visualização
Não sei se me fiz entender: preciso descobrir se tem alguém usando o registro pai, para impedir edição dos registro Filho.
Uso Sqlserver
KERPLUNK 15/05/2025 17:07:54
#504941
Hmmm, isso é uma tarefa mais complexa do que parece e tem várias maneiras de ser feito. Quando passo por situações parecidas, onde é preciso monitorar entidades(que pode incluir registros de várias tabelas), o que faço é um "gerenciador". Tipo, usuário "A" abriu "OS 99" e todos os seus ítens, mando uma mensagem para o gerenciador. Sempre ao abrir a entidade, verifico o gerenciador e se estiver aberto, passa por toda uma regra de negócio para saber o que fazer. Mas é bem complexo fazer isso e muda bastante o modo como a aplicação funciona.
NILSONTRES 15/05/2025 19:01:14
#504944
Alterado em 15/05/2025 19:06:44 Pode criar um campo TimeStamp, esse tipo de campo grava automaticamente yyyy-MM-dd HH:mm:ss da ultima edição do registro, ao usuário entrar para ler o registro grave em uma variável o timestamp do registro, antes de salvar a edição verifique se o timestamp continua o mesmo, se sim conclui a edição, se esta com data superior a do momento da leitura significa que algum outro usuário editou o registro enquanto esteve aberto para leitura pro usuário local, então bloqueia a edição.
Faça seu login para responder