Ir para conteúdo

POWERED BY:

Arquivado

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

wilsoncrescencio

Como evitar entrada de dados duas vezes?

Recommended Posts

Banco de Dadoss Access, conexão ADO Connection - Delphi7Tabela = TabNomeEu gostaria que antes de gravar na tabela o sistema realiza-se uma checagem para ver se aquele nome já tinha sido gravado anteriormente , se sim uma mensagem "Nome já Cadastrado", se não que os dados fossem gravados com uma mensagem "Dados Cadastrados com Sucesso".Como consigo fazer isso sem usar SQL?Quais são os comandos que tenho que realizar?Tenho que usar algum componente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Morpheu...

 

Bom Dia...

 

eu particularmente acredito que sem usar sql fique muito ruim...

 

no caso eu faço assim, no Evento OnExit do Dbedit, ou antes de gravar eu executo uma query...

 

por exemplo:

 

procedure TFrmCadCliente.EdtTelefoneExit(Sender: TObject);begin  If TblCliente.State = dsInsert then  Begin	QryProcura.Active := False;	QryProcura.SQL.Clear;	QryProcura.SQL.Add('Select * from CadCliente Where Cada_Cod = '+QuotedStr(EdtTelefone.Text));	QryProcura.Active := True;	If QryProcura.RecordCount > 0 then	begin	  If QryProcuraMY_STATUS.Value = 'E' then	  Begin		showmessage('Já existe um cadastro Excluído com esse Telefone, Verifique!');	  End	  Else	  Begin		showmessage('Já existe um cadastro com esse Telefone, Verifique!');	  End;	  EdtTelefone.SetFocus;	  Abort;	End;	QryProcura.Active := False;	  End;end;

espero ter ajudado...

 

 

abraço! http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hugo... muito obrigado pela ajuda... eu até consegui fazer sem usar SQL...A solução ficou assim:procedure TMATRICULA.Button1Click(Sender: TObject);begin BEGIN if DM1.Nome.Locate('ALUNO',DBEdit1.Text,[loCaseInsensitive, loPartialKey]) then // Checa no DataModule (DM1) na Tabela NOME se o Aluno já existe BEGIN Messagedlg('Aluno Já Cadastrado!', mtInformation, [mbOk], 0); IF DBEDIT1.CanFocus THEN DBEDIT1.SetFocus; exit; if not DM1.nome.Locate('ALUNO',DBEdit1.Text,[loCaseInsensitive, loPartialKey]) then BEGIN DM1.NOME.Post ShowMessage('Aluno Novo! Inclusão realizada com Sucesso!'); END; END;O único problema é que a mensagem Aluno Já Cadastrado! e a caixa com OK sempre aparecem...Seráq tem como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa a mancada... mas em um teste... percebi que não só a mensagem aparece... como insere os dados gravando-os na tabela....Que decepção... achei q tinha chegado a algum lugar sózinho racionando.... cheguei em lugar nenhum...

Compartilhar este post


Link para o post
Compartilhar em outros sites

è o seguinte...

 

se for em um grid, ou qq coisa... dessa maneira que foi colocada sem SQL, podemos fazer assim ó:

 

 

procedure TMATRICULA.Button1Click(Sender: TObject);

begin

if DM1.Nome.Locate('ALUNO',DBEdit1.Text,[loCaseInsensitive, loPartialKey]) then

BEGIN

Messagedlg('Aluno Já Cadastrado!', mtInformation, [mbOk], 0);

DM.NOME.Cancel;

End;

 

if not DM1.nome.Locate('ALUNO',DBEdit1.Text,[loCaseInsensitive, loPartialKey]) then

BEGIN

DM1.NOME.Post

ShowMessage('Aluno Novo! Inclusão realizada com Sucesso!');

END;

END;

Note que:

DM.NOME.Cancel;

Irá cancelar qq ação sobre a referida tabela ou query que esteja em andamento... (Insert, Edit)

 

 

 

espero ter ajudado...

 

 

Abraço! http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif

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.