Como controlar duplicidade no ClientDataSet

Delphi

15/11/2007

Olá pessoa.Gostaria de saber com faço para criar em um ClientDataSet uma forma de não deixar o usuário inserir duas vezes o mesmo item.
Este ClientDataSet está apenas em memória, não esta ligado a nenhuma query.


Obrigado!


Joaohenriquemf

Joaohenriquemf

Curtidas 0

Respostas

Vitor Alcantara

Vitor Alcantara

15/11/2007

Tenta criar um indice do tipo unique no seu campo unico.

Ex:

  ClientDataSet1.IndexDefs.Add(´idx1´,´NomeDoCampo´,[ixUnique]);
  ClientDataSet1.IndexName := ´idx1´;



GOSTEI 0
Joaohenriquemf

Joaohenriquemf

15/11/2007

Amigo deu certo, agora sim ele valida com ´Key Violation´, como faço para tratar esta mensagem?

Obrigado!


GOSTEI 0
Vitor Alcantara

Vitor Alcantara

15/11/2007

Segue um simples exemplo de tratamento de erros.
var
  e:exception;
begin
  Try
     bla bla bla
     ClientDataSet.Post;
  Except
    on e:exception do
    begin
       //Testa a string do erro se encontra a mensage "Key Violation"
       if Pos(´Key Violation´, UpperCase(e.Message) ) > 0 then
       ShowMessage(´Registro duplicado´)
       else
       ShowMessage(e.Message);
    end;
  end;
end;



GOSTEI 0
Joaohenriquemf

Joaohenriquemf

15/11/2007

Deu certo!Valew amigos.Obrigado!


GOSTEI 0
POSTAR