Fórum Erros do Interbase no Delphi #180426

07/09/2003

0

Olá galera,
como se faz para tratar os erros do Interbase no Delphi ???
Erros como:
Violação de Primary Key,
Qdo tento remover um item que possui Foreig Key e que
está sendo utilizado por outra tabela
Erro qdo ao conectar, não é encontrado o arquivo .gdb

Eu uso o [b:dbc696e738]TRY... EXCEPT...[/b:dbc696e738]
mas naum sei como tratar estes erros do Interbase.
Grato se alguem puder me ajudar.
T+


Eniorm

Eniorm

Responder

Posts

07/09/2003

Luizfernando777

Olá colega,
A respeito da chave primária não vou poder ajula-lo,
pois trabalho de uma forma diferente sobre o mesmo,
Sobre o erro de não encontrar o gdb,
vc mesmo já respondeu,
faz a procura do mesmo antes de conectar o ibDataBase,
if not FileExists(´LocalenomedaBase´) then
begin
if OpenDialog.Execute then
begin
´IMPLEMENTAR O CÓDIGO´ CONFORME A SUA NECESSIDADE,
se você precisar de um exemplo me manda o seu e-mail
que mando um exemplo
até +


Responder

Gostei + 0

07/09/2003

Vinicius2k

Enio,
Eu também estou a procura de melhores formas para tratar os erros, inclusive descobrir os códigos de erro, q ainda não encontrei em lugar nenhum... mas o principio, acredito ser o mesmo que utilizavamos para tratar os erros do Paradox, um exemplo de como tenho usado :

function IBDB_conectar: Boolean; begin try IBDB_main.Connected:= true; result:= true; except on erro: EIBInterbaseError do begin Application.MessageBox(Pchar(´Não foi possível conectar ao Banco de Dados e foi retornada a seguinte mensagem de erro: ´´+ erro.message+´´.´),´Erro´,mb_iconhand+mb_ok); result:= false; end; end; end;


sabendo os códigos de erro vc poderá implementar mais ou menos assim

function Tfrm_IBGA.IBDB_conectar: Boolean; begin try IBDB_main.Connected:= true; result:= true; except on erro: EIBInterbaseError do begin case erro.Errors[0].ErrorCode of 1: showmessage(´erro tal...´); 2: showmessage(´erro tal...´); end; { ação à executar no caso de erro } end; end; end;


soh um detalhe : vc precisa acrescentar na lista de uses a unit IB (neste exemplo estou usando IBX)...

a função FileExists citada pelo colega não será de grande valia caso seu banco de dados seja remoto, por exemplo : ela sempre retornará false caso seu banco seja : ´servidor:c:\banco\banco.gdb´...

espero ter ajudado...


Responder

Gostei + 0

07/09/2003

Luizfernando777

Caro Colega,
desculpe pela informação,
este exemplo aue lhe enviei eu uso em meu projeto 3 camadas,
e a comunicação do Cliente é feito por IP


Responder

Gostei + 0

08/09/2003

Eniorm

function IBDB_conectar: Boolean; begin try IBDB_main.Connected:= true; result:= true; except on erro: EIBInterbaseError do begin Application.MessageBox(Pchar(´Não foi possível conectar ao Banco de Dados e foi retornada a seguinte mensagem de erro: ´´+ erro.message+´´.´),´Erro´,mb_iconhand+mb_ok); result:= false; end; end; end; ====================================== function Tfrm_IBGA.IBDB_conectar: Boolean; begin try IBDB_main.Connected:= true; result:= true; except on erro: EIBInterbaseError do begin case erro.Errors[0].ErrorCode of 1: showmessage(´erro tal...´); 2: showmessage(´erro tal...´); end; { ação à executar no caso de erro } end; end; end;


Ok, cara, mas essa variavel ERRO q vc declarou ???
T+


Responder

Gostei + 0

08/09/2003

Vinicius2k

não entendi sua dúvida... eu a declarei para q ela receba a mensagem de erro q foi retornada pela exceção... ela não precisa ser declarada antes... essa eh a declaração dela :
on [color=blue:93a7bea47c]erro: EIBInterbaseError[/color:93a7bea47c] do


Responder

Gostei + 0

08/09/2003

Eniorm

não entendi sua dúvida...


Essa variável ERRO é de que tipo?? Exception ???

Eu já tenteu usar o seguinte

var e : Exception;
...
try
...
except on
  e: EIBInterBaseError do ...
...


mas [color=blue:3cb6709e73]EIBInterBaseError[/color:3cb6709e73] o sistema
informava que era desconhecida.
T+


Responder

Gostei + 0

08/09/2003

Vinicius2k

agora entendi...
foi por isso q eu disse :
soh um detalhe : vc precisa acrescentar na lista de uses a unit IB...

este tipo estah definido na unit ´IB´... vc precisa referenciá-la nas suas uses..
T+


Responder

Gostei + 0

08/09/2003

Eniorm

ok entaum cara muito obrigado, com certeza
tá resolvido...!
T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar