[firebase-br] RES: como proceder com erro?

Emerson emersoncarrard em yahoo.com.br
Sáb Jul 21 10:55:07 -03 2007


Bom dia

Não sei muito bem ao certo mas eu sei que quando ocorre um erro com o uso de
exception o firebird retorna para o sistema operacional uma mensagem em uma
determinada porta q naum me recordo qual é o que da pra ser feito é fazer
com q sua aplicação capture esta mensagem através do componente ibevents, vc
cria os eventos q poderá retornar e no evento OnEventAlert do ibevent
colocar o seguinte código (exemplo):

IF EventName = 'IRPONTOVENDA' THEN
 BEGIN
    SHOWMESSAGE('Este registro não pode ser alterado');
    DM.QPontoVenda.Edit;
    dm.QPontoVendaSTATUS.Value:='ATIVO';
    DM.QPontoVenda.Post;
 END;



-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de fabinho
Enviada em: sexta-feira, 20 de julho de 2007 22:01
Para: FireBase
Assunto: Re: [firebase-br] como proceder com erro?

Caro Anderson,

Obrigado pela rápida resposta. Tudo funcionou perfeitamente, mas não 
consegui exibir uma mensagem personalizada no delphi. Quando ocorre a 
exception, ele exibe uma mensagem enorme juntamente com a minha exception. 
Eu gostaria que o delphi lesse o código do erro e, se esse fosse de violação

de UNIQUE, exibisse uma mensagem tal.. O caso é: e se o erro no banco for 
por outro motivo? Eu não quero uma mensagem de erro genérica pro banco, 
entende?


grato!!


----- Original Message ----- 
From: "Anderson - EasyBit" <anderson em easybit.com.br>
To: "FireBase" <lista em firebase.com.br>; "FireBase" <lista em firebase.com.br>
Sent: Friday, July 20, 2007 8:18 PM
Subject: Re: [firebase-br] como proceder com erro?


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


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.476 / Virus Database: 269.10.10/908 - Release Date: 19/7/2007 
18:10



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa


		
_______________________________________________________ 
Yahoo! Mail - Sempre a melhor opção para você! 
Experimente já e veja as novidades. 
http://br.yahoo.com/mailbeta/tudonovo/
 






Mais detalhes sobre a lista de discussão lista