Selecao DevMedia QUERO SER PRIME

Fórum Como fazer essa verificação? #371571

24/06/2009

0

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;


Vandeir

Vandeir

Responder

Posts

24/06/2009

.lg.

Já ouviu falar em variável [b:cb5e3dc23c]booleana[/b:cb5e3dc23c]!?
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.


Responder

Gostei + 0

24/06/2009

Danielrsanches

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 !!


Responder

Gostei + 0

26/06/2009

Emerson Nascimento

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:
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;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar