Fórum Exceções no ApplyUpdates #357073
13/04/2008
0
É o seguinte...
Tenho uma aplicação onde utilizo um componente MDOQuery, um Provider liga à Query e um ClientDataSet ligago ao Provider.
Suponhamos que eu tenha o seguinte código:
procedure Button1Click(Sender: TObject); begin try ClientDataSet1.ApplyUpdates(0); except ShowMessage(´Erro ao tentar gravar dados´); end; end;
Nesse caso o propósito é simples...
Tentar aplicar atualizações feitas no DataSet, e, caso haja algum erro, exibir a mensagem ´Erro ao tentar gravar dados´.
O problema é que, quando utilizo o ClientDataSet, mesmo que haja um erro, a execução do programa não é direcionada para o bloco Except.
Alguém sabe o motivo desse erro?
Jonathan Bispo
Curtir tópico
+ 0Posts
13/04/2008
Emerson Nascimento
para visualizar esses erros, implemente o evento OnReconcileError do seu clientdataset. uma simples linha
ShowMessage(E.Message)
exibe a mensagem de erro pra você.
Gostei + 0
13/04/2008
Jonathan Bispo
Realmente, coloquei o código no evento OnReconcileError do ClientDataSet e funcinou perfeitamente.
Mas encontrei um outro problema.
Por exemplo, se houver algum outro código após o ApplyUpdates(0) e mesmo que ocorra um erro nesse método, o código continua sendo executado.
Não é igual ao bloco Try...Except que muda a excução do programa.
Como faço para que isso aconteça usando o Evento OnReconcileError?
Gostei + 0
13/04/2008
Emerson Nascimento
procedure TForm1.Button1Click(Sender: TObject);
var
nErros: integer; // variável com o total de erros obtidos
begin
nErros := ClientDataSet1.ApplyUpdates(0);
// se ocorreu algum erro, sai da rotina
if nErros > 0 then exit;
// se NÃO ocorreu erro algum, prossegue
{demais rotinas a serem executadas}
end;
procedure TForm1.ClientDataSet1ReconcileError(
DataSet: TCustomClientDataSet; E: EReconcileError;
UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
ShowMessage(E.Message);
end;
Gostei + 0
14/04/2008
Jonathan Bispo
Muito obrigado Emerson.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)