Ir para conteúdo
Fórum Script Brasil
  • 0

Bloqueio Pessimista!


borges02

Pergunta

Bom dia!

Gostaria de saber se alguém tem algum exemplo, artigo sobre bloqueio pessimista?

Estou precisando de alguma coisa para bloquear o registro enquanto estiver em edição e não deixar outro usuário editar o registro se estiver em modo edição. Tá dificil de achar alguma coisa desse tipo, não achei nada ainda sobre isso. Consegui apenas no modo: concorrencia otimista. Mas eu preciso mesmo da concorrencia pessimista.

Bom, vou tentar explicar como está o meu cadastro de clientes para ter uma noção de como funciona: Tenho 2 groupbox no form.

O primeiro groupbox tem um textbox onde fica o código do cliente.

O segundo groupbox fica os dados do cliente, ou seja: todos os campos textos(textbox) ref. a NOME, APELIDO, DATA DE NASCIMENTO, FONE, DATA DO CADASTRO, CPF, CELULAR e assim por diante...

Funciona da seguinte forma: quando o usuário sai do textbox: CODIGO DO CLIENTE, o foco cai no primeiro campo do segundo groupbox, aquele onde fica os dados do cliente. Quando o foco entra no segundo groupbox, esse registro está em edição.

Como eu vou fazer para controlar se esse registro está sendo editado ou não? Eu gostaria que quando outro usuário tenta-se entrar mostra-se a seguinte mensagem: 'Registro em manutenção!'...

Estou programando em visual studio 2008 (C#) windows forms .net framework 3.5... Lembrando que a aplicação independe de banco de dados...

Desde já, agradeço pela ajuda e atenção de todos...

Muito Obrigado...

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Você pode criar um campo na tabela (chamado "Edição" ou algo do tipo) e definir um valor para quando está editando e para quando está livre (tipo 1 para editando e 0 para livre). Antes de editar, checa o valor do campo, se for 0, libera e coloca 1 lá. Se for 1, dá a mensagem e não deixa editar. E quando o primeiro que estava editando terminar de editar ele tem que voltar o valor do campo para 0.

Essa é só uma idéia, afinal de contas, no final você diz que "a aplicação independe de banco de dados...", e não entendi muito bem o que você quis dizer com isso.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

beleza Graymalkin?

Dei uma olhada no seu exemplo e tive uma idéia.

criei uma tabela (usuario) com os campos (codigo, tabela, registro e data). Tabela = grava o nome da tabela que está sendo editada.

Registro = grava o código do registro da tabela que está sendo editada.

Data = grava a data e a hora do registro que está sendo editada.

Na aplicação adicionei um timer no formulário. Esse timer fica atualizando a cada 5 segundos o campo timer referente ao registro que está em edição. Se um usuário for editar um registro faz a verificação se existe registro na tabela usuário ref. aquele registro que está tentando editar, caso encontre um registro na tabela usuário confere o tempo atual menos o tempo que está gravado na tabela usuário. Caso o tempo for menor ou igual a 5 segundos significa que está em edição, caso contrário significa que aconteceu algum problema com o terminal e o registro estava em edição no momento onde outro usuário não está mais editando e a tabela usuário é atualizada com esse novo usuário que está editando o registro. Após gravar a inserção, alteração, exclusão ou cancelar os mesmos, esse registro que ficou gravado na tabela usuário é excluída.

Testei aqui e parece que está funcionando certinho. Simulei quando o terminal ou sistema trava, queda de energia e funcionou tranquilo. Mas para funcionar certo a aplicação rodando nos terminais precisa pegar a data e hora do servidor para os terminais trabalharem com data e hora padrão senão da problema...

Então, a aplicação independe do banco, pode ser usado com qualquer SGBD...

Muito obrigado pela ajuda e atenção, valeu mesmo...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...