Preciso de ajuda para impedir registro repetidos

Delphi

30/11/2017

Vamos os detalhe
Gostaria de impedir field CL_FANTASIA de receber nomes iguais (criar uma chave unica nesse caso não é possível pq a ideia é fazer via código)

eu tenho uma verificação que procura na tabela se existe um nome igual e lança uma mensagem caso encontre

FDLerFantasia.Active := False;
FDLerFantasia.ParamByName('fantasia').Value := DBNomeFantasia.Text;
FDLerFantasia.Active := True;

if FDLerFantasiaCL_FANTASIA.Value <> '' then
begin
if (FDLerFantasia.RecordCount = 1) then
begin
MessageDlg('Nome Fantasia já Cadastrado!!!',mtWarning,[mbOK],0);
DBNomeFantasia.SetFocus;
Exit;
end;
end;

O detalhe é que se for EDITAR um registro que tenha um nome fantasia no seu registro a verificação vai retornar a mensagem.
Enfim. eu preciso tratar se um determinado registro que tem seu nome fantasia e evitar a mensagem na hora de EDITAR
Emanuel Gonçalves

Emanuel Gonçalves

Curtidas 0

Melhor post

Luiz Vichiatto

Luiz Vichiatto

01/12/2017

No caso você terá que fazer esta verificação quando o estiver incluindo o cadastro e não quando você está editando, há uma diferença de INSERT para UPDATE.

No INSERT você faz a consistência do nome e no UPDATE não faz consistência.

Porém você não deve permitir que o nome venha ser alterado, bloqueando o campo do nome, ou não o incluindo no UPDATE.

Tenho uma rotina que não permite que o cliente altere o nome, mesmo sendo UPDATE. Quando necessário, tenho uma rotina específica para alteração do nome, onde faço a validação.

espero ter ajudado.
GOSTEI 1

Mais Respostas

Raimundo Pereira

Raimundo Pereira

30/11/2017

Boa tarde!
Acredito que seja uma tela de cadastro de clientes...
Você deve possuir uma chave estrangeira "CPF ou CNPJ"

Usando a função insert or update você não precisa realizar tal verificação.

Por outro lado se preferir, você pode criar uma função no Delphi para localizar o registro com retorno de Falso ou Verdadeiro.
1 Roda a função se o retorno for falso você realizar seu insert.

Eu particularmente para algumas rotinas uso insert or update
GOSTEI 0
POSTAR