Fórum Validação em ClientDataSet #316510

17/03/2006

0

Tenho um dbgrid+datasource+clientdataset para receber os possíveis endereços dos meus clientes, até ai foi bem. Porém preciso validar se não há dois tipos de endereços iguais.

Para pegar o tipo de endereço, utilizo um lookup com os tipos possíveis.

Pensei em fazer com arrays, mas acho que não é a melhor solução.

Tem como fazer isto no momento da digitação ou na hora de gravar?

Atenciosamente,

Rodolfo


Rodolfo.pirolo

Rodolfo.pirolo

Responder

Posts

18/03/2006

Thomaz_prg

Uma forma bem simples é criar um índice único (Unique) com os campos chaves. Isso evitaria a duplicação.


Responder

Gostei + 0

18/03/2006

Rodolfo.pirolo

Thomaz,

Como faria isto dentro do clientdataset? Trabalho com stored procedure para acessar o banco.

Atenciosamente,

Rodolfo


Responder

Gostei + 0

18/03/2006

Martins

Thomaz, Como faria isto dentro do clientdataset? Trabalho com stored procedure para acessar o banco. Atenciosamente, Rodolfo


Vc está usando cds, então clique na propriedade IndexDefs do cds, crie um indice á em Options e marque [b:a442e59304]Unique[/b:a442e59304], em Field ponha o campo q vc quer q seja o indice, é básicamente isso, estou sem o Delphi instalado aqui, pois estou no Cyber.

Qualquer coisa posta aqui novamente.


Responder

Gostei + 0

18/03/2006

Rodolfo.pirolo

Martins,

Funcionou em partes, só que dá mensagem de ´Key violation´, quando vou sair do registro.

Em qual evento do dbgrid posso tratar este erro?

Atenciosamente,

Rodolfo


Responder

Gostei + 0

18/03/2006

Paullsoftware

vc pode tratar no affterPost do CDS...


Responder

Gostei + 0

18/03/2006

Rodolfo.pirolo

Paull,

Desculpe-me, mas como faço isto? Sou iniciante, não tenho muito conhecimento.

Atenciosamente,

Rodolfo


Responder

Gostei + 0

18/03/2006

Martins

Paull, Desculpe-me, mas como faço isto? Sou iniciante, não tenho muito conhecimento. Atenciosamente, Rodolfo


No Cds tem um Evento Chamado [b:1aeb933701]AfterPost[/b:1aeb933701]

Mas nesse caso para tratar melhor esse erro no cds, podemos utilizar o evento [b:1aeb933701]OnPostError[/b:1aeb933701], escrevendo o seguinde código.

var 
  Emsg :String;
begin 
  Emsg := E.Message; 
    if Emsg = ´Key violation.´ then
       begin
          ShowMessage( ´Já existe um registro com essa informação! ´ ); 
          action := daAbort; 
          Cds.CancelUpdates;
       end;
end;


Teste esse código e depois post aqui o resultado por favor.

Boa sorte!!!!


Responder

Gostei + 0

18/03/2006

Paullsoftware

[quote:adf310954c=´rodolfo.pirolo´]Paull, Desculpe-me, mas como faço isto? Sou iniciante, não tenho muito conhecimento. Atenciosamente, Rodolfo


No Cds tem um Evento Chamado [b:adf310954c]AfterPost[/b:adf310954c]

Mas nesse caso para tratar melhor esse erro no cds, podemos utilizar o evento [b:adf310954c]OnPostError[/b:adf310954c], escrevendo o seguinde código.

var 
  Emsg :String;
begin 
  Emsg := E.Message; 
    if Emsg = ´Key violation.´ then
       begin
          ShowMessage( ´Já existe um registro com essa informação! ´ ); 
          action := daAbort; 
          Cds.CancelUpdates;
       end;
end;


Teste esse código e depois post aqui o resultado por favor.

Boa sorte!!!![/quote:adf310954c]

[b:adf310954c]valeu Martins![/b:adf310954c]...
mais complementando, a mensagem é informada certo? e como fazemos para focar o controle com a informação incorreta, no caso de termos mais de um campo com o valor [b:adf310954c]Unique[/b:adf310954c]??


Responder

Gostei + 0

18/03/2006

Rodolfo.pirolo

Martins e Paull,

O funcionou legal, muito obrigado pela ajuda de voces :!:

Rodolfo


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar