Como tratar integridade do banco !
Como tratar integridade do banco !
Olá pessoal, estou com dificuldades em tratar a integridade do banco, no meu caso Firebird 1.5 + Delphi 7 + IBX, o que está acontecendo é o seguinte quando vou deletar um produto cadastrado o programa gera um erro de integridade pois este produto já está em outra tabela(Item Venda) , gostaria de saber onde e como posso tratar esse erro para que retorne somente uma mensagem alertando que esse produto não pode ser excluído !
Obrigado
Olá pessoal, estou com dificuldades em tratar a integridade do banco, no meu caso Firebird 1.5 + Delphi 7 + IBX, o que está acontecendo é o seguinte quando vou deletar um produto cadastrado o programa gera um erro de integridade pois este produto já está em outra tabela(Item Venda) , gostaria de saber onde e como posso tratar esse erro para que retorne somente uma mensagem alertando que esse produto não pode ser excluído !
Obrigado
Afterdev
Curtidas 0
Respostas
Paulo
19/08/2008
Experimentou colocar num bloco Try...Except? No except você trata a mensagem do erro da forma como você quiser. Pode usar o ApplicationsEvents também(Acho que dá também, acho).
GOSTEI 0
Afterdev
19/08/2008
Tentei dessa forma, mas ainda não funciona !
preciso de ajuda............
procedure TformPadrao1.ApplicationEvents1Exception(Sender: TObject; E: Exception); begin if E is EIBInterBaseError then begin case EIBInterBaseError(E).IBErrorCode of -530: {Violação de chave estrangeira, 335544466} Application.MessageBox(PChar(´Não é possível excluir este registro.´), ´Atenção !!!´, MB_ICONEXCLAMATION); -803: {Violação de chave primária, 335544665} Application.MessageBox(PChar(´Registro já cadastrado.´), ´Atenção !!!´, MB_ICONEXCLAMATION); else Application.MessageBox(PChar(E.ClassName + ´ - ´ + E.Message), ´Atenção !!!´, MB_ICONEXCLAMATION); end; end; end;
preciso de ajuda............
GOSTEI 0
Afterdev
19/08/2008
Bom tentei utilizar o Application Events e funcionou somente fora do delphi, alguém tem uma solução que pode ser feita por dentro do delphi ou seja compilando o projeto no delphi !
valeu.......
procedure TformPadrao1.ApplicationEvents1Exception(Sender: TObject; E: Exception); begin if ( E is EIBInterBaseError ) then begin if ( EIBInterBaseError(E).IBErrorCode = 335544466 ) then Application.MessageBox( PChar( ´Não é possível excluir este registro, pois existem outras informações no sistema que dependem do mesmo.´ ), ´Atenção !!!´, MB_ICONEXCLAMATION ) else if ( EIBInterBaseError(E).IBErrorCode = 335544375 ) then Application.MessageBox( PChar( ´O servidor de banco de dados não está aberto.´ + #13 + ´Verifique e tente novamente.´ ), ´Atenção !!!´, MB_ICONEXCLAMATION ) else if ( EIBInterBaseError(E).IBErrorCode = 335544344 ) then Application.MessageBox( PChar( ´Não foi possível encontrar o banco de dados.´ ), ´Atenção !!!´, MB_ICONEXCLAMATION ) else Application.MessageBox( PChar( E.ClassName + ´ - ´ + E.Message ), ´Atenção !!!´, MB_ICONEXCLAMATION ); end; end;
valeu.......
GOSTEI 0