Ir para conteúdo

POWERED BY:

Arquivado

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

seveNeves

Registro duplicado

Recommended Posts

Tenho o código abaixo para evitar que o login do usuário seja cadastrado com o mesmo nome duas vezes, quando incluo um novo login funciona perfeitamente, mas quando vou alterar qualquer usuário retorna que 'login já cadastrado'.

Alguém tem alguma idéia de como contornar isso?

 

Begin

QRLogin.Close;

QRLogin.Sql.clear;

QRLogin.Sql.add('select * from tab_usuarios where login =:login');

QRLogin.ParamByName('login').asstring:= DBEdit2.text;

QRLogin.Open;

 

If QRLogin.recordcount > 0 then

Begin

ShowMessage('login já cadastrado');

DBEdit2.SetFocus;

Exit;

End;

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este código está onde? Numa função ou direto no botão salvar??

 

Digamos que esteja numa função... para poder funcionar, você em algum lugar terá que por uma flag indicando se a operação é de novo registro ou atualização... algo assim por exemplo:

 

Procedure Form1.SalvaRegistro(AtualizarRegistro : Boolean);
begin
   if not AtualizarRegistro then
   begin
	  QRLogin.Close;
	  QRLogin.Sql.clear;
	  QRLogin.Sql.add('select * from tab_usuarios where login =:login');
	  QRLogin.ParamByName('login').asstring:= DBEdit2.text;
	  QRLogin.Open;

	  If QRLogin.recordcount > 0 then
	  Begin
		  ShowMessage('login já cadastrado');		  
		  DBEdit2.SetFocus;
		  Exit;
	  End;

	  <comandos necessários para gravar um novo registro>
   end
   else
   begin
	  <comandos para atualizar seus registros>
   end;
end;

O que o código acima faz é básico: se não for uma operação de atualização, entra no teste e se o login já existir mostra o aviso... se for uma atualização, cai no else.. eu particularmente gosto de fazer as rotinas de gravação/alteração/exclusão uma separada da outra... de qualquer modo, fica aqui uma idéia que espero que lhe ajude no seu problema.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não podemos esquecer que na hora de editar / atualizar, é possivel que o usuário modifique o campo 'nome', e coloque o nome de um usuário que já esteja cadastrado. No entando a rotina de verificação deve ser feito também no momento da edição do registro...

 

Assinatura da função:

function userExists(const userName: string; userId: Integer = 0): Boolean;

Implementação:

function userExists(const userName: string; userId: Integer): Boolean;
  begin
	with qryAux do
	begin
	  Close;
	  SQL.Clear;
	  SQL.Add('SELECT ID_USUARIOS FROM USUARIOS');
	  SQL.Add('WHERE ID_USUARIOS <> ' + IntToStr(userId));
	  SQL.Add('AND NOMEUSUARIO = ' + QuotedStr(userName));
	  Open;
	end;
  
	Result:= qryAux.RecordCount > 0;
  end;

Usando esta funcção, basta que no momento que estiver editando o registro, você passe como parametro o id_usuario para a variavel idUser http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Rodrigo... no caso que eu montei, usei a premissa que o login do usuário, uma vez cadastrado, não poderia mais ser alterado, o que faria não ser necessário validar se o login já existe novamente... mas sua recomendação é válida e útil, visto que cada caso é um caso hehehe. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo Chrnos! Assim o amigo seveNeves fica com mais uma opção! pq seria interessante poder alterar o nome_usuario, as vezes ele cadastra uma letra errada ....

Abraço Chrnos... Obrigado pela sua colaboração!

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.