Fórum Atualização automática para todas as Conexões - Lazarus #589345
29/11/2017
0
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
Curtir tópico
+ 0Post mais votado
29/11/2017
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.
Ermesom Lourenco
Gostei + 2
Mais Posts
29/11/2017
Helton Garrido
https://www.youtube.com/watch?v=XesIJOYDTd0
Gostei + 0
30/11/2017
Helton Garrido
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)