[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