[firebase-br] como proceder com erro?

Anderson - EasyBit anderson em easybit.com.br
Sex Jul 20 20:18:51 -03 2007


At 19:45 20/7/2007, fabinho wrote:
>Moçada, é assim:
>
>
>Tenho uma tabela com o campo USUAR_APELIDO, 
>varchar e UNIQUE, ou seja, só admite registros 
>diferentes. Acontece que, quando cadastro 
>valores iguais nesse campo, obviamente o 
>firebird critica com a mensagem de erro.
>
>Mas eu quero fazer minha própria mensagem (seria 
>uma EXCEPTION?) Como chamo ela? Meu programa é no delphi.
>
>grato!!

Boa Noite,


Para fazer diretamente no FB, você pode criar uma EXCEPTION. Comando exemplo:

CREATE EXCEPTION EXCEPT_APELIDO_DUPLIC 'JA EXISTE 
OUTRO USUARIO COM O MESMO APELIDO.';

E chamá-la num Trigger  do tipo BEFORE INSERT, mais ou menos como abaixo:

atenção, não chequei esta trigger, coloquei apenas como exemplo :)

CREATE TRIGGER TI_TABELA_USUARIOS
FOR TABELA_USUARIOS BEFORE INSERT AS
         DECLARE VARIABLE NUMROWS INTEGER;

BEGIN

SELECT COUNT(*)
FROM TABELA_USUARIOS
WHERE NEW.USUAR_APELIDO = TABELA_USUARIOS.USUAR_APELIDO
INTO :NUMROWS;
IF (NUMROWS > 0) THEN
         EXCEPTION EXCEPT_APELIDO_DUPLIC;

END


No Delphi, uma das formas de se fazer isso é:

try
...
...
comandos para incluir o registro
...
...
except
    on e:exception do
         begin
         coloque sua mensagem aqui

         end;
end;


O bloco except será executado para qualquer erro 
(divisão por zero, por exemplo). Se vc quiser dar 
tratamento diferente para  erros de bancos de 
dados, deve ver se o erro ocorrido eh da classe 
EDataBaseError. O Help do delphi tem vários 
exemplos (e melhores que o que eu passei).


Abraço,

Anderson - EasyBit





Mais detalhes sobre a lista de discussão lista