Mensagem de erro na exclusao de registro relacionado

Delphi

24/03/2004

Ola,
Como faco para me dar uma msg de erro na hora de excluir o registro relacionado (chave estrangeira)?
Se possivel, sem q eu tenha q ir na tbl e verificar se tem algo relacionado a este codigo.
// codigo no botao de exclusao
procedure Tfrmpesqcadbanco.btnexcluirClick(Sender: TObject);
begin
  with dados do
    if sdsbanco.IsEmpty then
    begin
      beep;
      ShowMessage(´Não existem dados para exclusão!´);
    end
    else
    if application.messagebox(PCHAR(´Deseja exluir o Banco ´+ dados.sdsbancoCODBANCO.AsString +´ - ´+ dados.sdsbancoDESCBANCO.AsString +´ ?´),´Atenção!´,mb_iconQuestion+mb_yesno)=idno then
      Abort
    else
    begin
      sdsbanco.Delete;
      sdsbanco.ApplyUpdates(0);
    end;
end;
//

D7+fb1.5
Grato a todos
Luciano


Lucianorw

Lucianorw

Curtidas 0

Respostas

Lucianorw

Lucianorw

24/03/2004

Achei isto, mas naum sei onde colocar para chamar as msg de erro
procedure Tdados.appeventException(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 = 335544510 ) then
        Application.MessageBox( PChar( ´Não é possível continuar com a operação.´ + #13 + ´O banco de dados está sendo utilizado.´ ), ´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;

Grato
Luciano


GOSTEI 0
Lucas Silva

Lucas Silva

24/03/2004

try
aqui você tenta salvar..
except appeventException(....);
end;



GOSTEI 0
Lucianorw

Lucianorw

24/03/2004

[quote:05ac576a8c=´Lucas Alves Silva´]
try
aqui você tenta salvar..
except appeventException(....);
end;
[/quote:05ac576a8c]
Lucas,
Grato pela sua atenção!!!
Até akele ponto eu ja havia tentado, o problema é justamento o que eu coloco em: except appeventException([b:05ac576a8c]AKI Q NAO ENTENDO[/b:05ac576a8c]);
Grato
Luciano


GOSTEI 0
Sremulador

Sremulador

24/03/2004

tem um componente appevents acho que e esse o nome que serve para pegar os eventos gerais do delphi inclusive erros.


GOSTEI 0
Lucianorw

Lucianorw

24/03/2004

tem um componente appevents acho que e esse o nome que serve para pegar os eventos gerais do delphi inclusive erros.

Ola,
É este q estou usando, mas como sou novato no assunto nao consigo fazer o q preciso.
Grato
Luciano


GOSTEI 0
Weber

Weber

24/03/2004

O Firebird é praticamente igual ao Interbase e se a versão 1.5 for seguir o mesmo padrão tem como alterar as Mensagem de Exception do proprio banco de dados.
Se você alterar no banco de dados além do Delete você também terá as mensagens de Update e Insert prontas.

Baixe o programa IBExpert (tem uma versão free) que ele faz as alterações no banco com facilidade e ainda mostra o comando SQL usado.


GOSTEI 0
Geno

Geno

24/03/2004

Rpz..nao to entendendo bem qual a dificuldade ai....
Vai ver na oentendi a pergunta...

Mas aki eu faco o seguinte :


try
.
.
.
Except
on E: Exception do
begin
dtm.suatabela.Rollback;
ShowMessage(´O sistema nao conseguiu fazer o requisitado.´ + #13 + 13 +
´A mensagem gerada pelo banco foi: ´ + 13 + 13 +
E.Message);
end; // end Exception
End; // end try


GOSTEI 0
Lucianorw

Lucianorw

24/03/2004

Problema resolvi usando sql.
Desisti do applicationevents pq so usa em vcl.
Grato a todos pela ajuda.
Luciano


GOSTEI 0
POSTAR