Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marostegan

Não repetidr registro

Recommended Posts

Olá pessoal!

 

Eu tenho aqui um form de cadastro de numeração de chaves.

 

Gostaria de fazer uma função que verifique se um determinado número já está cadastrado. Se sim então retorna uma msg falando q esse número já existe cadastrado, se não deixar cadastrar numa boa.

 

Meu BD é access

 

como fazer isso (mas sem usar chave primária)?

 

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Monte uma função que faça um select com base no registro que quer pesquisar e a chame sempre que for fazer um cadastro... se ela retornar como verdadeira, é porque tal valor já foi gravado no banco, senão pode inserir numa boa.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um modo simples e sem muitas firulas... que você pode trabalhar melhor depois.

 

function TForm1.ExisteRegistro(iNumero : Integer):Boolean;
var bExiste : Boolean;
begin
	bExiste := False;
	Query1.Close;
	Query1.Sql.Clear;
	Query1.Sql.Add('Select * from tabela where campo = ' + IntToStr(iNumero));
	Query1.Open;
	If not Query1.IsEmpty then
	   bExiste := True;
	Result := bExiste;
end;

E no código ficaria algo assim:

 

if not ExisteRegistro(44) then
   begin
	   <comandos para inserir>
   end;

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, eu faço da seguinte forma:

 

1) Crio uma função quanquer:

 

function VerificaCPFDuplicado(valor: string) : string;
begin
end;

2) Chamo esta função no evento OnExit do DBEdit:

 

VerificaCPFDuplicado(CXnum_cpf.Text);

3) Executo uma query dentro da função com o parâmetro recebido (valor):

 

DM.QRVerificaCPFTabela.Close;
   DM.QRVerificaCPFTabela.SQL.Clear;
   DM.QRVerificaCPFTabela.SQL.Add('SELECT num_cpf FROM informacoes_pessoais WHERE num_cpf = :Numcpf');
   DM.QRVerificaCPFTabela.ParamByName('Numcpf').AsString := valor;
   DM.QRVerificaCPFTabela.Open;

4) Ainda dentro da função, testo o retorno de registro:

 

if DM.QRVerificaCPFTabela.RecordCount > 0 then begin
	  ShowMessage('CPF já cadastrado!');
	  Form1.CXnum_cpf.SetFocus; end
   else begin
	  Form1.CXstatus.SetFocus;
   end;

Assim funciona bem....

 

Espero ter ajudado.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom dia amigo...

eu faço da seguinte forma: suponto que você tenha os dados em uma query já e essa query está em um DM (Data Module), faça:

if dm.query1.locate('Numero_Chave', EdtNumero_Chave.Text, []) then
  begin
	Application.MessageBox('Número da chave já cadastrada', 'Impossível continuar', MB_IcoQuestion+MB_OK);
	EdtNumero_Chave.Clear;
	EdtNumero_Chave.SetFocus;
  end
  else
end;
ou seja, ele verifica se tem no seu bd algo igual ao que você digitou no EdtNumero_Chave.Text... se existir ele chama a msg, se nao, continua... essa função locate, caso nao saiba, ela aponta pra um determinado registro no bd...

espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.