Código
GLOBAL, DAS PROCEDURES CRIADAS NO ORACLE E TAMBÉM EM OUTROS BANCOS DE DADOS.
PRIMEIRAMENTE SERÁ NECESSÁRIO AO TÉRMINO DAS RAISE EXCEPTION DEFINIR UM
CARACTERE SINALIZADOR DE FIM DE MENSAGEM.
NO EXEMPLO ABAIXO FOI UTILIZADO O CARACTER '|'.
EXEMPLO:
RAISE_APPLICATION_ERROR(-20002,'CNPJ já cadastrado.|');
AGORA NO DELPHI SERÁ NECESSÁRIO DECLARAR A BIBLIOTECA DB EM USES
EXEMPLO:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, jpeg, ExtCtrls, ComCtrls, DB;
AGORA O PRÓXIMO PASSO É DECLARAR A PROCEDURE MOSTRAERROS
EXEMPLO:
Procedure MostraErros (Sender : Tobject ; E : Exception );
//IMPLEMENTAÇÃO DA PROCEDURE MOSTRAERROS
procedure TForm1.MostraErros(Sender: Tobject;
E: Exception);
var
msg : string;
I, X: integer;
begin
//Verifica se o erro apresentado ocorre na base de dados
If E is EdatabaseError then
begin
//For para varrer o tamanho da mensagem
for I := 1 To Length(e.Message) Do
begin
//if para verificar o fim da mensagem definido pelo caracter '|'
if (e.Message[I] = '|') then
//gravando posição do caracter indicativo
X := I;
END;
{SALVANDO MENSAGEM NA VARIAVEL MSG (32 É ONDE INICIA A MENSAGEM DA PROCEDURE SEM O CÓDIGO DE ERRO)
ISSO NO ORACLE, AGORA EM OUTROS BANCOS SERÁ NECESSÁRIO FAZER A CONTAGEM E SUBSTITUIR OS VALORES DO 32}
msg := copy(e.Message, 32, X-32);
//APRESENTANDO A MENSAGEM AO USUARIO
MessageBox(Application.Handle, PChar(Msg), 'Erro', MB_OK + MB_ICONERROR);
end
//APRESENTANDO ERRO SEM FORMATÇÃO SE NÃO FOR ERRO DA BASE DE DADOS
ELSE
MessageBox(Application.Handle, PChar(e.Message), 'Erro', MB_OK + MB_ICONERROR);
end;
AGORA O ÚLTIMO PASSO É FAZER A CHAMADA DA PROCEDURE MOSTRAERROS NO ONCREATE DO FORM
EXEMPLO:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := MostraErros;
end;
DESSA FORMA OS ERROS DE BANCO DE DADOS DO SISTEMA FICAM CENTRALIZADOS.
CASO SE QUEIRA TRATAR ERROS DE NOT_NULL, CHAVES PRIMARIAS E ESTRANGEIRAS,
SERÁ NECESSÁRIO FAZER UMA BUSCA DENTRO DA MENSAGEM E TRATAR TAMBÉM.
MAS COM ESSA DICA JÁ DÁ PRA BOTAR A CABEÇA PRA FUNCIONAR E ADEQUAR SEMPRE MAIS
OS CÓDIGOS E IR COMPARTILHANDO
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009