Saber que usuário está usando Registro

Delphi

19/11/2004

Bom pessoal, a algum tempo atrás, eu havia perguntado, como fazer um travamento pessimista no Firebird utilizando IBX. Minha dúvida foi sanada, porém, eu gostaria de saber se tem como saber qual usuário está utilizando o registro, para mostrar na mensagem.

A mensagem ficaria algo do tipo:

´Registro está sendo utilizado pelo usuário ´

ou então

´Registro está sendo utilizado pelo computador ´

Utilizo Delphi 7, com Firebird 1.5.


Thomaz_prg

Thomaz_prg

Curtidas 0

Respostas

Jc_analista

Jc_analista

19/11/2004

vc poderia criar um campo na tabela dizendo qual o usuário estava usando, assim toda vez que alguem editar um registro vc vai la e marca qual usuario esta usando. Não conheço outra forma.


GOSTEI 0
Thomaz_prg

Thomaz_prg

19/11/2004

Olá colega!

Obrigado pela ajuda mas, eu também havia pensado nesta forma. Porém, vi um sistema, feito em uma linguagem chamada Progress, que faz isso diretamente. O erro retornado pelo banco de dados já contém o nome do usuário que está utilizando o registro, e achei que, o Firebird sendo um SGBD, também teria como pegar o nome do usuário que está usando o banco, quem sabe através de um comando SQL, sei lá.

Mas de qualquer forma obrigado.

Mais alguém tem alguma idéia???


GOSTEI 0
Thomaz_prg

Thomaz_prg

19/11/2004

Olá colega!

Obrigado pela ajuda mas, eu também havia pensado nesta forma. Porém, vi um sistema, feito em uma linguagem chamada Progress, que faz isso diretamente. O erro retornado pelo banco de dados já contém o nome do usuário que está utilizando o registro, e achei que, o Firebird sendo um SGBD, também teria como pegar o nome do usuário que está usando o banco, quem sabe através de um comando SQL, sei lá.

Mas de qualquer forma obrigado.

Mais alguém tem alguma idéia???


GOSTEI 0
Inutaishou

Inutaishou

19/11/2004

A solução do JC é válida, mas não recomendo... Se cair o servidor, ou até mesmo o cliente que estava usando o registro, aí, vai ter que acessar o BD externamente pra corrigir...

A unica outra solução que posso recomendar é que você trave um arquivo contendo o nome da tabela e o número do registro que está travado...

Quando for alterar, tente excluir todos os arquivos que estiverem no diretório... Os que ficarem estão travados... Aí, é só verificar os arquivos que estão ali e verificar se o registro que está tentando alterar está ali...

[]´s,


GOSTEI 0
Thomaz_prg

Thomaz_prg

19/11/2004

Olá colega GRFrones, fico grato pela atenção, mas acho que não fui bem claro.
Consegui travar o registro, utilizando o comando SQL ´select * from tabela where codigo = 1 with lock´. Ele evita que 2 usuários tentem alterar o mesmo registro ao mesmo tempo.

O que quero é, na hora de rerornar que o registro está sendo usado, o Firebird, me indicasse quem é o usuário, ou qual é a máquina que está usando este registro. Mas gostaria de fazer isso diretamente pelo banco de dados, pois, se houverem muitas máquinas acessando, usando seu exemplo, eu teria que estar gravando estes arquivos no servidor (para serem compartilhados), e isso aumentaria o trafego na rede, sendo inviável.

Mas de qualquer forma muito obrigado pela ajuda.

Mas o que quero é saber, qual usuário (ou terminal) está utilizando o registro.


GOSTEI 0
Thomaz_prg

Thomaz_prg

19/11/2004

Alguém poderia me ajudar.


GOSTEI 0
Thomaz_prg

Thomaz_prg

19/11/2004

E aí pessoal, alguém poderia me ajudar?????


GOSTEI 0
Thomaz_prg

Thomaz_prg

19/11/2004

E aí pessoal, ninguém??


GOSTEI 0
POSTAR