Página 1 de 1
rlock quem esta prendendo ?
Enviado: 23 Jun 2016 20:43
por paiva_dbdc
Boa Noite
quando se tenta prender um registro e OUTRO usuário esta com ele aberto
tem como se saber QUAL usuário esta usando ?
ex:
5 pc com o sistema aberto.
preciso prender um registro para poder altera-lo.
+ da erro por ter alguém acessando este registro.
tem como obter a identificação desse usuário que esta impedindo de se alterar o registro ?
desde já agradeço
Paiva
rlock quem esta prendendo ?
Enviado: 24 Jun 2016 10:47
por Kapiaba
Se voce guardar o LOGIN dele...
rlock quem esta prendendo ?
Enviado: 24 Jun 2016 13:11
por asimoes
pode ser até o ip
rlock quem esta prendendo ?
Enviado: 24 Jun 2016 14:06
por JoséQuintas
Teria que acrescentar um campo no dbf pra isso.
Quando rlock() não funcionar, mostrar o conteúdo atual do campo.
Código: Selecionar todos
IF Rlock()
REPLACE usuario WITH UsuarioLogin()
ELSE
MsgExclamation( "registro preso pelo usuário " + usuario )
ENDIF
De brinde, terá o nome da última pessoa que mexeu no registro.
rlock quem esta prendendo ?
Enviado: 24 Jun 2016 14:12
por asimoes
Quintas,
Usuário login é o mesmo que hb_getenv("username") ?
REPLACE usuario WITH hb_getenv("username")
rlock quem esta prendendo ?
Enviado: 24 Jun 2016 15:06
por paiva_dbdc
Boa
se alteram o registro GUARDO o usuário e a data.
MAIS ............ o Problema é que UM usuário deu um enter para OLHAR e Não alterou ainda.
ai outro vendedor vai vender este produto por ex: e eu preciso alterar a qtd de estoque do produto ou seja
tenho que dar um lock e altera a quantidade
ai ao dar o LOCK não fica OK porque tem ALGUEM OLHANDO ou alterando o registro do produto em questão.
o rlock só retorna .T. ou .F.
neste momento precisaria identificar qual usuário esta olhando o produto .
tem solução ?
NAO sei se o dbf ou o win guarda quem esta LENDO um determinado registro(rs)
ai poderia mostrar quem (n) esta mexendo no registro em questão
ob
Paiva
rlock quem esta prendendo ?
Enviado: 24 Jun 2016 15:10
por paiva_dbdc
opa
é .... uma saída seria eu alterar se der enter .. desta forma saberia lá na venda ou onde precisar ... quem esta olhando
se não tiver nada automático vou ver se implemento
ob
Paiva
rlock quem esta prendendo ?
Enviado: 24 Jun 2016 15:16
por asimoes
Uma ideia,
Você pode criar uma tabela de usuarios com os campos: nome do usuário, data e hora
Quando o usuário entrar na rotina de venda, você grava nesta tabela o nome do usuário, data e hora.
Primeiro você lê a tabela e posiciona no último registro e pega o nome do usuário e mostra na tela, depois grava na tabela usuarios o nome, data e hora
Sequencia.
1-Abre a rotina
2-Abre a tabela usuarios e posiciona no último registro (esta tabela não tem indice)
3-Mostra o nome do último usuário que está usando a rotina, pode mostrar até a hora
4-Depois que mostrar, grava na tabela o nome, data e hora
Pra pegar o nome do usuário: hb_getenv("username")
É só uma ideia.
rlock quem esta prendendo ?
Enviado: 24 Jun 2016 16:24
por JoséQuintas
Nos cadastros em geral, bloqueia só na hora de salvar os dados.
Pedidos e outros semelhantes seriam uma exceção.
Crie uma forma mais fácil de consultar... rs... não sei se é o caso.
Nota:
Pra consultar não precisa rLock(), só pra alterar.
Tem gente que coloca isso até em relatório....
rlock quem esta prendendo ?
Enviado: 25 Jun 2016 19:02
por rochinha
Amiguinhos,
Tempos atrás postei um método que estive utilizando em um cliente. Durante dois meses o mesmo foi usado no sistema de forma transparente e cessaram os problemas de travamento.
Acontecia justamente porque usuários diferentes teimavam e tentar alterar registros idênticos.
Veja neste tópico
Só tive de trancar porque um camarada, ao invés de ajudar com exemplos práticos, ficou criticando.
Apesar de ter usando com Fivewin, pode servir para seus intentos. Não desprezando é claro todos os auxílios dados pelos caros amigos forenses até agora.
rlock quem esta prendendo ?
Enviado: 25 Jun 2016 20:18
por asimoes
Pode também questionar o usuário antes de entrar na rotina se é para somente consulta ou inclusão/alteração, ai já dá pra fazer um controle melhor.
rlock quem esta prendendo ?
Enviado: 25 Jun 2016 21:19
por JoséQuintas
Me chamou a atenção esta parte do outro post.
nunca aconteceu com voce, de travar um registro em um terminal e outro terminal ao travar o mesmo registro destravar o primeiro.
Também nunca percebi isso acontecer.
Uma coisa é fonte do semáforo.
Outra coisa é o fonte do exemplo, que apesar de usar o semáforo, só faz sentido pra quem sabe da ocorrência acima.
Eu inicialmente também acharia o exemplo inútil, por nunca ter visto a ocorrência acima.
Só o exemplo de uso, não a rotina de semáforo.
Foi isso que aconteceu lá, revise depois.
Um não entendeu o ponto de vista do outro.... rs
Inclusive o que ele comentou de melhorar já estava avisado no seu texto: pra cada um escolher o que acharia melhor pra mostrar