env mens erro qdo um campo com unique for duplicado-firebird

Delphi

21/03/2008

olá galera!

tenho um bd firebird 2.0, onde tenho uma unique para dois campos, (cpf, adesao),

qdo digito algo cujo os valores referentes aos campos cpf e adesao ja existem, ele e gravado normalmente, aparece no dbgrid e tudo, mas qdo fecho a aplicação, e abro novamente o registro tem desaparecido, gostaria de saber se existe a possibilidade de qdo eu estiver digitando e mandar gravar o registro, se a unique nao for respeitada, dar uma menssagem de erro e abortar a inclusão do registro?

desde ja agradeço,


adriano.


Xadriano

Xadriano

Curtidas 0

Respostas

Marco Salles

Marco Salles

21/03/2008

acho que vc deveria colocar componentes de conexão ... Por exemplo se for clientDataSet , acho que ja tem esta Opção .


GOSTEI 0
Xadriano

Xadriano

21/03/2008

uso extamente o clientDataSet,! como faço pra ele exibir uma menssagem de erro, qdo inserir dados reptidos?


GOSTEI 0
Marco Salles

Marco Salles

21/03/2008

uso extamente o clientDataSet,! como faço pra ele exibir uma menssagem de erro, qdo inserir dados reptidos?


sua aplicação é Desktop ou ClientServidor ???


GOSTEI 0
Marco Salles

Marco Salles

21/03/2008

veja por exemplo este codigo ...

procedure TForm1.cdsAfterPost(DataSet: TDataSet);
var
 cdsTemp:TClientDataSet;
 campo:String;
begin
  try
    try
       cdsTemp:=TClientDataSet.Create(nil);
       cdsTemp.CloneCursor(cds,True);
       campo:=´cpf´;
       cdsTEmp.AddIndex(´cpf´,´cpf´,[ixUnique]);
       cdsTemp.DeleteIndex(´cpf´);
       campo:=´adesao´;
       cdsTEmp.AddIndex(´adesao´,´adesao´,[ixUnique]);
       cdsTemp.DeleteIndex(´adesao´);
    finally
       cdsTemp.Free;
      end;
  except
    on e:exception do
      begin
       showmessage(´Erro !!!! . O Campo ´campo+´ não pode ser Duplicado´);
       cds.Edit;
       //DbGrid ou Outro Controle consciente De Dados...
       dbgrid1.SelectedField:=cds.FieldByName(campo);
      end;
  end;
end;



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

21/03/2008

alguns erros não são capturados pelo try..except.

nesses casos, implemente o evento OnReconcileError do cds com algo bem simples, como
ShowMessage(E.Message);


GOSTEI 0
POSTAR