Trafego de dados em rede local.

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Trafego de dados em rede local.

Mensagem por Ademir »

Boa tarde pessoal !


Tenho uma pequena duvida:

Meu sistema abre um determinado arquivo em duas estações diferentes ao mesmo tempo atraves de um dbedit(). Os usuarios nas duas estações posicionam o cursor no mesmo registro. Um deles (estaçao1) confirma a exclusao do registro antes do outro (estação2) que tambem o exclui em seguida. Quer dizer, nao exclui porque o mesmo ja fora excluido pelo outro usuario (estação1).

Sei que se na estação2 eu pressionasse qualquer tecla, isso atualizaria o dbedit e o registro excluido na estação1 nao seria mais mostrado.

Agora pergunto:

Quando eu tentei a exclusao na estação2, internamente o que acontece, pois fisicamente o registro nao existe mais ?

Espero que tenham entendido minha explicação.

Grato

Ademir.
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Re: Trafego de dados em rede local.

Mensagem por Stanis Luksys »

Ademir escreveu:Quando eu tentei a exclusao na estação2, internamente o que acontece, pois fisicamente o registro nao existe mais ?
Nada, pois provavelmente você só está dando um DELETE, o que apenas "marca" o registro para posterior eliminação com PACK. Ou seja, você só está REmarcando um registro já marcado. Se não me engano ainda assim dependeria de um COMMIT para que a primeira alteração fizesse efeito no segundo PC.

Agora, se o fato for de que isso atrapalha o uso do sistema, talvez seja necessário abrir o arquivo exclusivamente, e nem deixar executar o segundo dbEdit() junto com o primeiro.

Falou!
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

E aí Stanis ? Td bom ?

Bom seria se eu pudesse abrir o arquivo em modo exclusivo. Infelizmente não posso. Pensei em resolver isso atraves do refresh. Vou pesquisar mais um pouco. Mesmo assim valeu.
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Mensagem por Stanis Luksys »

Olá,

O Refresh você só vai consegur utilizar se mudar para TBrowse, com dbEdit vai ter que fazer a atualização "na mão".

Sendo assim, como em todos os casos, recomendo mesmo que parta para o TBrowse, não há nada a perder.

Falou....
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Como disse o Stanis, o ideal seria vc mudar para TBROWSE() e dar um refresh assim que alguem deletar o registro...ou a cada x segundos...agora de uma olhada no DBEDIT.CH lah tem uma referencia de REFRESH para DBEDIT() , de uma procurada aqui no forum que postei um exemplo de como eu usava o DBEDIT() no clipper e ele funcionava em rede blz...se não achar avisa...que amanha ou segunda posto um exemplo aqui !!!

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Ademir
Usuário Nível 3
Usuário Nível 3
Mensagens: 170
Registrado em: 31 Jul 2007 16:28
Localização: Porto Ferreira-SP

Mensagem por Ademir »

Bom dia a todos !


No caso de exclusao do mesmo registro em duas ou mais estações diferentes, resolvi o problema avisando o usuario que o registro já foi excluido em outra estação da seguinte forma:

Após bloquear o registro, verifico se o mesmo já foi excluido atraves da função DELETED(). Se retornar verdadeiro, dou o aviso. Se retornar falso, excluo o registro. Em seguida desbloqueio o registro e pronto !

Se alguem tem mais alguma opiniao a respeito, gostaria de saber.


Grato pela atenção de todos

Ademir.
Responder