Atualização automática para todas as Conexões - Lazarus

Delphi

29/11/2017

Boa tarde, pessoal!

Programo em Lazarus e estou usando os componentes TIBConnection, TSQLTransaction, TSQLQuary, TDataSource e o FariBird e IBExpert

Tenho 2 terminais usando minha aplicação.

Quando um usuário clica em gravar registro, faço um applyupdate no banco.

Neste momento, tem como automáticamente atualizar o Banco no outro terminal, em que o usuário está com um dbgrid aberto, para ele ver que o registro acabou de ser cadastrado por outro terminal?

No AfterPost de cada TSQLQuary coloquei o seguinte código

tbCadMorador.ApplyUpdates;
  Transacao.CommitRetaining;
  TbCadMorador.Refresh;
  dm.Conexao.Connected:=True;
  dm.Transacao.Active:=True;
  dm.tbCadMorador.Active:=True;
  tbCadMorador.Close;
  tbCadMorador.SQL.Clear;
  tbCadMorador.SQL.Add('select * from CADMORADOR');
  tbCadMorador.SQL.Add('where COD = (select max(COD) from CADMORADOR)');
  tbCadMorador.Prepare;
  tbCadMorador.Open;


Ex: Se o terminal 1 fez o cadastro e o mesmo estiver aberto, e se o terminal 2 com o mesmo form aberto que o terminal 1, só irá aparecer o que foi cadastrado pelo terminal 1 se o terminal 2 fechar o seu form e abri-lo novamente.

como resolver isso???

Abraço!
Helton Garrido

Helton Garrido

Curtidas 0

Melhor post

Ermesom Lourenco

Ermesom Lourenco

29/11/2017

Você está usando transação em dm.Transacao.Active:=True; porém não está comitando a mesma. Após todos os comandos faça dm.Transacao.Commit; ou algo do tipo que poderá visualizar a informação em todas as estações.

O problema pode ser entendido com ajuda deste artigo:
https://technet.microsoft.com/pt-br/library/ms190612(v=sql.105).aspx

Quando uma transação é aberta seus recursos não são liberados enquanto não se fecha a transação (com commit que é sucesso ou rowback que é o desfazimento de tudo).

Espero ter ajudado.
GOSTEI 2

Mais Respostas

Helton Garrido

Helton Garrido

29/11/2017

Meus caros, referente ao post acima, o que eu gostaria de fazer seria como neste vídeo

https://www.youtube.com/watch?v=XesIJOYDTd0
GOSTEI 0
Helton Garrido

Helton Garrido

29/11/2017

Obrigado meu caro Emersomi pela dica...
GOSTEI 0
POSTAR