GARANTIR DESCONTO

Fórum como evitar duplicidade de dados em um cadastro? #242266

09/07/2004

0

como faço para evitar o cadastro de alguem duas vezes?

por exemplo:

o operador cadastro os dados de uma pessoa chamada joão da silva santos, e sem querer o operador vai digitar o mesmo cadastro, como faço para evitar que este joão da silva santos seja incluido de novo e sem falar que poder haver outro joão da silva santos mas com os dados diferentes. :?:


Duilinho

Duilinho

Responder

Posts

09/07/2004

Tuiobecker

Ola

vc deve ter uma chave primaria na sua tabela, caso ela for o nome, nao serao cadastrados dois nomes iguais, mas pense assim, se for o nome a chave primaria, vc nao podera cadastrar duas pessoas diferente mas com o mesmo nome.

flw


Responder

Gostei + 0

09/07/2004

Dankada

vc tem que ter uma chave primaria ,essa chave naum pode se repetir, para verificar se ja exite vc faz uma busca na tabela.


Responder

Gostei + 0

09/07/2004

Gandalf.nho

Não é necessário uma chave primária, basta um índice único (que não permite valores iguais).


Responder

Gostei + 0

09/07/2004

Horus

Eu já passei por um problema parecido e resolvi da seguinte forma:

1. Coloquei uma Query no form.
2. No evento OnExit do DBEdit que é responsável pela entrada de dados no campo coloquei uma pesquisa usando a query para retornar qualquer registro da tabela que seja igual ao que está sendo inserido.
3. Se a query retornar algum registro executa uma ShowMessage de registro já incluido ou registro igual a outro.

Espero ter ajudado.


Responder

Gostei + 0

09/07/2004

Rodolpho123

Além desta maneiras citadas acima, vc pode também fazer assim:

Crie um campo, tipo [b:8dd932e328]cpf[/b:8dd932e328] para cada cliente inserido. Quando vc for inserir um novo registro, verifique se o [b:8dd932e328]cpf[/b:8dd932e328] do novo cliente foi encontrado (Locate para Tables, Select para Queries). Aí vc pode criar uma rotina de tratamento à seu gosto para esta operação.


Responder

Gostei + 0

03/10/2014

Helton Garrido

Mas como ficaria este código no OnExite, por favor
Responder

Gostei + 0

03/10/2014

Helton Garrido

Mas como ficaria este código no OnExite, por favor

1. Coloquei uma Query no form.
2. No evento OnExit do DBEdit que é responsável pela entrada de dados no campo coloquei uma pesquisa usando a query para retornar qualquer registro da tabela que seja igual ao que está sendo inserido.
3. Se a query retornar algum registro executa uma ShowMessage de registro já incluido ou registro igual a outro.
Responder

Gostei + 0

03/10/2014

Marisiana Battistella

Pessoal, vocês desconsideraram a possibilidade de haver mais de uma pessoa com o mesmo nome e sobrenome (sabemos que existe muitos casos assim).
Você pode incluir um outro tipo de validação, como o CPF ou RG, pois esses sim sabemos que devem ser únicos.
Acredito que seja esse o método mais utilizado e mais recomendado.
Responder

Gostei + 0

04/10/2014

Marlon Minotti

Exato, como a Marisiana disse. Particularmente acho que todos acima,exceto a Marisiana e o Rodolpho123, entenderam o problema do nosso amigo errado. Ele só quer saber como fazer para não inserir a mesma pessoas mais de 1 vez. A maior e mais provável lógica para isso é verificar se o CPF ou RG já existe como a Marisiana disse. no Evento OnClick do seu botão Salvar, se acaso tiver, faça com que uma query sua dê um select no banco buscando pelo CPF se já existe, se retornar algum valor você deve bloquear a inserção do novo registro, se a query vier vazia é porque não existe ninguém com o mesmo CPF, daí você insere o novo registro.

Simples assim, VLWs FLWs.
Responder

Gostei + 0

06/10/2014

Marisiana Battistella

Obrigada por complementar Marlon!!
Mas ele não pode criar um INDEX no campo CPF ao invés de ficar fazendo um select para verificar?
Com o INDEX ele não vai conseguir inserir valores duplicados e quando acontecer uma tentativa de inserção duplicada, ocorre um erro, então ele só teria que tratar esse erro...

Exemplo de sintaxe no Oracle:
CREATE UNIQUE INDEX ON dept_unique_index dept (dname)
       TABLESPACE indx;
Responder

Gostei + 0

21/02/2018

Helton Garrido

Boa tarde, Marisiana, mais teria como você fazer um exemplo de como ficaria este seu código? Pois estou tendo o mesmo problema e o meu sistema eu uso CPF e não estou conseguindo.

Minha tabela é CLIENTE e o campo CPF

Já coloquei na OnExit da DBEDit o seguinte código:
If dm.tbCliente.Locate('CPF',DBEdit5.Text,[loCaseInsensitive, loPartialKey]) Then
     Begin
        MessageDlg('Este paciente já se encontra cadastrado na Base de Dados!',mtWarning,[MBOK],0);
        DBEdit5.SetFocus;
     end;                                                                                
Responder

Gostei + 0

21/02/2018

Jerson Boer

Olá Helton e Duilinho,

Uma forma prática e limpa de fazer uma validação dessa é você criar uma função a ser chamada quando você der o Salvar do registro (momento em que todos os seus dados já estão preenchidos e não fica a informação em Exit de campo). Eu passaria pelo menos 2 parâmetros na função (IDCliente e CPF) e essa função ter uma query (crie o componente em tempo de execução) que vá buscar em seu banco de dados
Select * from Cliente where CPF = X and IDCliente <> Y
e essa função te dar um Result de True/False.

Complementando, no seu salvar você vai fazer:

if FuncaoCliente(IDCliente,CPF) = True then
begin
-- Sua mensagem de que o registro já existe
end
else
begin
-- Seu processo de salvar o registro
end;


Vejam aí, qualquer coisa retorno com a função mais detalhada.
Responder

Gostei + 0

21/02/2018

Jerson Boer

Obrigada por complementar Marlon!!
Mas ele não pode criar um INDEX no campo CPF ao invés de ficar fazendo um select para verificar?
Com o INDEX ele não vai conseguir inserir valores duplicados e quando acontecer uma tentativa de inserção duplicada, ocorre um erro, então ele só teria que tratar esse erro...

Exemplo de sintaxe no Oracle:
CREATE UNIQUE INDEX ON dept_unique_index dept (dname)
       TABLESPACE indx;


Mariana, agora que observei sua resposta sobre criar o index e não o select, dando minha opinião, se ele tiver um tipo sistema (como o meu) onde o cadastro de cliente pode sofrer revisões e e deverá manter as versões anteriores a indexação do CPF pode ser um problema.
Responder

Gostei + 0

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

Aceitar