Fórum Como tratar erro de FK em FB e Delphi #327548

16/08/2006

0

Boa tarde pessoal
Estou migrando uma aplicação paradox para Firebird..
Antes no paradox eu tratava as excessões ref. a KeyViolation e foreignKey(FK)..
begin
  if (E is EDBEngineError) then
  begin
    if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then
    begin
      MsgErro(´Registro já cadastrado.´);
      abort;
    end
    else if (E as EDBEngineError).Errors[0].Errorcode = eForeignKey then
    begin
      MsgErro(´Dado inválido.´);
      abort;
    end;
  end;
end;

Hoje Estou utlizando DBExpress com SQLDataSet, DataSetProvider,ClientDataSet e DataSource.
Ai eu mudei o codigo para ficar assim:

  if (E is EDBEngineError) then begin
    if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then begin
      MsgErro(´Registro já cadastrado.´);
      abort;
    end
    else if (E as EDBEngineError).Errors[0].Errorcode = eForeignKey then begin
      MsgErro(´Dado inválido.´);
      abort;
    end;
  end;
  if (E is EDBClient) then begin
    if (E as EDBClient).Errorcode = eKeyViol then
    begin
      MsgErro(´Registro já cadastrado.´);
      abort;
    end
    else if (E as EDBClient).Errorcode = eForeignKey then begin
      MsgErro(´Dado inválido.´);
      abort;
    end;
  end;
end;

Mas não consigo tratar as FKs, por exemplo tenho uma tabela de cidades e outra de estados..
Estado é FK na tabela de cidades.. portanto qdo eu digitar uma sigla eu gostaria de mostrar uma msg, tipo registro nao existe e coisa e nao a mensagem qeu o delphi mostra..
Alguém poderia me dizer qual evento eu manipulo, estou tentando nos eventos OnreconcilieError?

Se alguém puder me dizer desde já Agradeço

Grato
Fausto


Faustoalves

Faustoalves

Responder

Posts

16/08/2006

Night_man

Voce poderia fazer no Evento OnValidade do Field,

no Fiend de Estada que esta no ClientDataSet de Cidades, coloque o evento OnValidade eu coloco um Select para ver se o valor existe na tabela destino.

Uma das vantagens disso eh que o erro nao vai acontecer somente no final, quando o dados for aplicado (ApplyUpdates) no banco, quando o valor jah for alterado o erro jah aparecera na tela


Responder

Gostei + 0

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

Aceitar