Usar ApplyUpdates ou Post resolve?
17/02/2006
0
Uso base em Interbase com componentes nativos (IBDataSet), e para salvar os dados sempre faço assim:
IbDataSet.Post; IbDataSet.ApplyUpdates;
mais quando uso somente a funcção Post do IBDataSet as vezes funciona normalmente, as vezes não, já usando o applyUpdates depois do Post fica tudo na paz...
me corrijam se estiver errado mais o applyupdates não seria necessário apenas quando a propriedade CacheUpdates do IbDataSet estivesse True, então pq as vezes quando uso somente o Post não salva as alterações quando uso o sistema em rede?
Paullsoftware
Posts
18/02/2006
Eniorm
caso essa propriedade esteja como true, apos o Post, os dados são gravados no cache, em memória.... e após o ApplyUpdates e Commit que realmente os dados são gravados no banco...
é algo semelhante ao conceito do DBX (caso eu esteja errado me corrijam).....
particularmente eu uso assim
deixo como true, e no evento AfterPost da query (ou IBDataset, no meu caso) eu dou o ApplyUpdates seguido do CommitRetaining
abraço...
18/02/2006
Lindomar.des
afterpost,afterdelete:
IBTransaction1.CommitRetaining;
aftercancel:
IBTransaction1.RollbackRetaining;
Para isso criei 2 procedures Generic_AfterPost_Delete e Generic_AfterCancel. E ligo os eventos respectivos dos IBDataset´s.
Toda vez que o usuario salva,deleta e/ou cancela, o sistema já grava as alterações. Com isso tb impossibilita ao usuario a opção de desfazer alguma alteração feita por engano. Mas isso é uma faca de dois gumes.
ex: 01
o usuario está digitando uma NF com uns 30/40 itens. Quando está quase terminando a digitação alguma coisa acontece e desliga o computador...resultado: digitação perdida...e o usuário puto da vida.
ex: 02
o usuario exclui um determinado registro (quando não há integridade referencial para impermitir). Se ele excluiu por engano não há como desfazer...resultado: usuario puto da vida.
Levando em consideração o primeiro exemplo, optei por commitar todos os post´s. Quanto ao segundo exemplo o usuario precisa estar atento ao trabalho e suas ações.
19/02/2006
Edilcimar
Clique aqui para fazer login e interagir na Comunidade :)