Fórum Será que é algum tipo de bug no DBExpress #341069

28/04/2007

0

Olá,

Estou desenvolvendo um sistema onde tenho várias tabelas. E em algumas estou percebendo algo estranho. É o seguinte: tenho uma tela de cadastro de cidades e uma outra de clientes. E cada cliente pertence a uma cidade. E quando eu deleto uma cidade, que existe algum cliente, o sistema não está fazendo nada, nem emitindo alguma mensagem de erro, ou não está gravando. Pela lógica seria para o sistema dar algum aviso, mesmo com a mensagem default do delphi. Por que tipo, qaundo eu tento excluir pelo ibexpert a referida cidade, o mesmo me retorna um erro de violação de chave estrangeira. Era mais ou menos esse tipo de erro que era para ser mostrado na aplicação. Estou utilizando o dbexpress com firebird 2.0 e com componentes da paleta datacontrols.

E esse é o código que eu estou inserindo no botão deletar:

try
      DM.cdsCidades.Delete;
      DM.cdsCidades.Active := False;
      MessageDlg(´Operação efetuada com sucesso!!!´, mtInformation, [mbOK],0);
      inherited;
    except
      on E : Exception do
      begin
        MessageDlg(´Existem referência a essa cidade. Favor verificar antes da exclusão.´, mtError, [mbOK], 0);
        Abort;
      end;
    end;
  end;

 
E no evento afterdelete:

var
  Transacao : TTransactionDesc;
begin
  Transacao.TransactionID := 1;
  Transacao.IsolationLevel := xilREADCOMMITTED;
  DM.conConexao.StartTransaction(Transacao);
  try
    TClientDataSet(DataSet).ApplyUpdates(-1);
    DM.conConexao.Commit(Transacao);
 except
    TClientDataSet(DataSet).CancelUpdates;
    DM.conConexao.Rollback(Transacao);
    MessageDlg(´Ocorreram erros durante a operação!!!´,mtError, [mbOK],0);
  end;


Alguém sabe por que está ocorrendo isso? E qual seria a solução para o meu caso?

Até mais.


Iniciante2007

Iniciante2007

Responder

Posts

28/04/2007

Marco Salles

tente programar o evento oneconcilerror do clientDataSet


Responder

Gostei + 0

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

Aceitar