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)..
Hoje Estou utlizando DBExpress com SQLDataSet, DataSetProvider,ClientDataSet e DataSource.
Ai eu mudei o codigo para ficar assim:
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
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
Curtir tópico
+ 0
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
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
Clique aqui para fazer login e interagir na Comunidade :)