Página 1 de 1

Trafego de dados em rede local.

Enviado: 31 Ago 2007 16:10
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.

Re: Trafego de dados em rede local.

Enviado: 31 Ago 2007 17:58
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!

Enviado: 31 Ago 2007 18:31
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.

Enviado: 31 Ago 2007 20:37
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....

Enviado: 31 Ago 2007 22:39
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

Enviado: 01 Set 2007 10:33
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.