[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