Como tratar integridade do banco !

19/08/2008

1

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


Responder

Posts

19/08/2008

Paulo

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).


Responder

19/08/2008

Afterdev

Tentei dessa forma, mas ainda não funciona !

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


Responder

20/08/2008

Afterdev

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 !

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


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira