Tratamento de Erros Exceções
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 ..
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
Curtidas 0
Respostas
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
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
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 ???
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
30/05/2003
meu banco é interbase .
GOSTEI 0
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
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
30/05/2003
ja foi Resolvido com o codigo acima obrigado a todos ...
grato mesmo ...
grato mesmo ...
GOSTEI 0