Fórum ClientDataSet x ReconcileError #348506
06/11/2007
0
ClientDataSet x ReconcileError
Ola pessoal.
Estava com problemas na finalizacao de um conjunto de operacoes em meu sistema, onde estavam dentro de uma transacao mas por causa do uso dos ClientDataSet´s nao estava controlando os erros no mesmo. Apos estudar o assunto aqui no forum, resolvi fazer da forma que consta no codigo logo abaixo, o que resolveu meu problema. Minha duvida é: é a forma correta de fazer esse controle quando ha erros nos clientdataset´s? Existem uma forma mais direta, sem usar uma variavel (ErroApplyUpdates)?
try
if not IBTransaction.InTransaction then IBTransaction.StartTransaction;
comandos SQL´s (inserts / updates / deletes)
...
Posts em ClientDataSets
...
ErroApplyUpdates := false;
ClientDataSet1.ApplyUpdates(0);
ClientDataSet2.ApplyUpdates(0);
ClientDataSet3.ApplyUpdates(0);
...
if ErroApplyUpdates then
raise Exception.Create(´´);
...
outros comandos
comandos SQL´s (inserts / updates / deletes)
...
if IBTransaction.InTransaction then IBTransaction.Commit;
Application.MessageBox(´Operação finalizada!´, ´Sucesso´, MB_OK + MB_ICONINFORMATION);
except
if IBTransaction.InTransaction then IBTransaction.Rollback;
Application.MessageBox(´Erro na operação!´, ´Erro´, MB_OK + MB_ICONERROR);
end;
procedure form1.cdsNFReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
ErroApplyUpdates := true;
end;
Ola pessoal.
Estava com problemas na finalizacao de um conjunto de operacoes em meu sistema, onde estavam dentro de uma transacao mas por causa do uso dos ClientDataSet´s nao estava controlando os erros no mesmo. Apos estudar o assunto aqui no forum, resolvi fazer da forma que consta no codigo logo abaixo, o que resolveu meu problema. Minha duvida é: é a forma correta de fazer esse controle quando ha erros nos clientdataset´s? Existem uma forma mais direta, sem usar uma variavel (ErroApplyUpdates)?
try
if not IBTransaction.InTransaction then IBTransaction.StartTransaction;
comandos SQL´s (inserts / updates / deletes)
...
Posts em ClientDataSets
...
ErroApplyUpdates := false;
ClientDataSet1.ApplyUpdates(0);
ClientDataSet2.ApplyUpdates(0);
ClientDataSet3.ApplyUpdates(0);
...
if ErroApplyUpdates then
raise Exception.Create(´´);
...
outros comandos
comandos SQL´s (inserts / updates / deletes)
...
if IBTransaction.InTransaction then IBTransaction.Commit;
Application.MessageBox(´Operação finalizada!´, ´Sucesso´, MB_OK + MB_ICONINFORMATION);
except
if IBTransaction.InTransaction then IBTransaction.Rollback;
Application.MessageBox(´Erro na operação!´, ´Erro´, MB_OK + MB_ICONERROR);
end;
procedure form1.cdsNFReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind;
var Action: TReconcileAction);
begin
ErroApplyUpdates := true;
end;
Drf
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)