Tratamento de Erros Exceções

Delphi

30/05/2003

Bom dia .
estou usando Delphi 6 eo IB6
..
Gostaria entes de gravar um registro jogar uma mensagem antes de um erro de duplicidade de registro ...minha rotina está assim


IBQEncaminhadasConcluidas.ParamByName(´Par_Obs´).AsString:=Memo1.Text;
IBQEncaminhadasConcluidas.ExecSQL;
Dm.IBTransaction1.Commit;

aonde eu coloco as Exceções... obrigado ..


C-t

C-t

Curtidas 0

Respostas

Oberdan

Oberdan

30/05/2003

IBQEncaminhadasConcluidas.ParamByName(´Par_Obs´).AsString:=Memo1.Text;
Try
IBQEncaminhadasConcluidas.ExecSQL;
ShowMessage(´Registro Gravado´);
Except
ShowMessage(´Registro não Gravado´);
End;
Dm.IBTransaction1.Commit;

Caso de certo, ele exibe a mensagem de confirmação, caso o registro já exista, ou haja outro erro, ela não exibe a mensagem de confirmação e sim a de exceção.

[]
Oberdan


GOSTEI 0
Midas

Midas

30/05/2003

cara estou com o mesmo problema por assim dizer ...
eu tenho que testar uma chave para que ela não duplique
minha rotina
no evento onposterror da tabela (uso o dbe)
if e.message =´key violation.´ then
begin
showmessage(´Codigo ja existe!´);
end;
tive outra ideia fazer a verificação no evento onexit do dbedit
problema
ao fazer a verificação ele me retorna sempre que o codigo existe. De fato existe mesmo pois ao entrar a tabela e inserção, e digitar o numero no dbedit ele ja insere na tabela e no onexit ele faz a verificação e acha o registro na tabela ...
como devo proceder ???


GOSTEI 0
Midas

Midas

30/05/2003

meu banco é interbase .


GOSTEI 0
Oberdan

Oberdan

30/05/2003

Na verdade eu não sei direito como fazer utilizando table, pois nunca utilizei este componente. Eu sempre utilizei o TQuery, e faço uma busca rápida no banco de dados através de SQL, então assim que digitar o código, por exemplo, ele já barra o registro, não sendo necessário digitar o restante da informação. Ex.

With Query1 do
Begin
Close;
SQL.Clear;
SQL.Add(´Select Codigo from Table Where Codigo = :PrmCodigo ´);
ParamByName(´PrmCodigo´).value := DBEdit1.Text;
Open;
If Not IsEmpty then
ShowMessage(´O código já está cadastrado´);
End;

Espero que ajude.

[]Oberdan


GOSTEI 0
Midas

Midas

30/05/2003

ja foi Resolvido com o codigo acima obrigado a todos ...
grato mesmo ...


GOSTEI 0
POSTAR