Como fazer essa verificação?
Criei no meu sistema uma tabela de log, gravo nessa tabela todos os registros que foram exlcuidos. Porém quando há alguma excessão de erro do banco de dados e o registro não é excluido devido essa exceção continua gravando na tabela de log pq coloquei os comandos de inserção na tabela de log nos botões exclusões. Como eu faço para verificar no ato da exclusão se houve excessão, caso tenha tido não deixar incluir na tabela de log. meu código é esse:
if application.messagebox(´Deseja excluir este Registro?´,´Confirmar
exclusão?´,mb_iconquestion+mb_yesno) = mrYes then
if dm.cdsauditoria.applyUpdates(0) >= 0 then
begin
dm.cdscadlocador.delete;
dm.cdscadlocador.appluUpdates(0);
end
else
//aqui coloco os comandos de inclusão na tabela de auditoria.
end;
end;
if application.messagebox(´Deseja excluir este Registro?´,´Confirmar
exclusão?´,mb_iconquestion+mb_yesno) = mrYes then
if dm.cdsauditoria.applyUpdates(0) >= 0 then
begin
dm.cdscadlocador.delete;
dm.cdscadlocador.appluUpdates(0);
end
else
//aqui coloco os comandos de inclusão na tabela de auditoria.
end;
end;
Vandeir
Curtidas 0
Respostas
.lg.
24/06/2009
Já ouviu falar em variável [b:cb5e3dc23c]booleana[/b:cb5e3dc23c]!?
Então.
Se for True... Grava no log. Se for False... Não grava no log.
Pego!?
Por padrão sete-a pra True. Se rolar a exceção... Sete-a pra false.
:wink:
Qualquer dúvida, postae.
.LG.
boValida: Boolean
Então.
Se for True... Grava no log. Se for False... Não grava no log.
Pego!?
Por padrão sete-a pra True. Se rolar a exceção... Sete-a pra false.
:wink:
Qualquer dúvida, postae.
.LG.
GOSTEI 0
Danielrsanches
24/06/2009
pra isso serve o try...except ...
try NOME_DA_TABELA.DELETE
...aqui os comandos para salvar no log, sendo que excluiu o registro...
except on E: Exception do
begin
showmessage(´Erro ao excluir registro.´+#13+E.Message);
...aqui os comandos que desejar, sendo que não excluiu ...
end;
end;
abraços !!
try NOME_DA_TABELA.DELETE
...aqui os comandos para salvar no log, sendo que excluiu o registro...
except on E: Exception do
begin
showmessage(´Erro ao excluir registro.´+#13+E.Message);
...aqui os comandos que desejar, sendo que não excluiu ...
end;
end;
abraços !!
GOSTEI 0
Emerson Nascimento
24/06/2009
o try..except não funciona para o ApplyUpdates do CDS.
será necessário implementar o evento OnReconcileError do CDS. lá você saberá se houve erro e daí pode executar sua rotina de LOG.
pode ser com variável boleana. algo assim:
no DM implemente o evento OnReconcileError do CDS:
no seu botão de exclusão:
será necessário implementar o evento OnReconcileError do CDS. lá você saberá se houve erro e daí pode executar sua rotina de LOG.
pode ser com variável boleana. algo assim:
no DM implemente o evento OnReconcileError do CDS:
procedure Datamodule1.cdsCadLocadorReconcileError(DataSet: TCustomClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction); begin lErro := True; // variável pública do DM end;
no seu botão de exclusão:
if application.messagebox(´Deseja excluir este Registro?´,´Confirmar exclusão?´,mb_iconquestion+mb_yesno) = mrYes then begin dm.lErro := False; dm.cdscadlocador.delete; dm.cdscadlocador.ApplyUpdates(0); if not dm.lErro then // se não deu erro na exclusão, adiciono ao LOG //aqui coloco os comandos de inclusão na tabela de auditoria. end;
GOSTEI 0