[firebase-br] Firebird Classic Processos Perdidos

Gladiston Santana gladiston em vidy.com.br
Seg Abr 25 18:24:14 -03 2016


Coloque nos seu form principal Delphi no evento FormCloseQuery:
begin
  CanClose:=true;
  if FB_SERVER.InTransaction
    then FB_SERVER.Commit;
  FB_SERVER.Close;
end;

Isso fará com que qualquer transação esquecida seja commitada, o pessoal se
concentrou muito no applyupdates, mas existem controles transacionais
também para os selects.
Se tiver usando FireDac você tem de optar por controle manual ou
automatico, assim, se for seguir a dica do pessoal de
commit/commitretaining logo após o applyupdate você terá bastante dor de
cabeça porque tudo que você esquecer não será commitado. Minha dica, deixe
no automatico mesmo e teste a sentença acima.
Para estudar o problema você pode jogar um botão lá em cima para estar
acesso sempre que houver transações, daí saberá se seus applyupdates estão
funcionando corretamente. No geral, clientdataset funciona, mas há pessoas
que reclamam seja pela ocorrência de lakes ou por não entender claramente
as conciliações, delta, etc... e principalmente, se esquecem que ao
trabalhar offline, tem coisas que ficaram caducadas que precisam ter seu
devido refresh antes de uma próxima edição.

Você pode estudar ter 2 componentes de transação e estudar o uso de uma
transação read-only(para selects) e outra normal  para UpdateTransaction
(atualizações). Eu não uso essas propriedades do TConnection porque
trabalho de outra forma, mas talvez vc possa testar usá-las e se gostar, a
implementação é fácil, seus commits não serão perdidos porque as pesquisas
e seus selects estariam sendo exibidas por uma transação readonly separada.

inte+



Mais detalhes sobre a lista de discussão lista