env mens erro qdo um campo com unique for duplicado-firebird
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.
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
Curtidas 0
Respostas
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
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
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
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
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);
nesses casos, implemente o evento OnReconcileError do cds com algo bem simples, como
ShowMessage(E.Message);
GOSTEI 0