Ir para conteúdo

POWERED BY:

Arquivado

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

valdirborges

botão OK do form login

Recommended Posts

ADO=conexão

adotable=tbusuarios

adoquery=query

 

 

Olá estou programando o botão Ok do meu form login, com o código abaixo eu consigo logar mas somente com o 1º usuário da tabela, preciso fazer com q a query varra toda a tabela e estou com dificuldade, vejam como está:

 

procedure TFrmLogin.btnokClick(Sender: TObject);

 

begin

 

if (Senha.text<>'') and (usuario.text<>'') then

begin

// Condição que testa a igualdade dos campos senha e usuário

if (Senha.text=query.FieldByName('senha').AsString) and (usuario.text=query.FieldByName('usuario').AsString) then

begin

frmlogin.Hide;

frmlogin.close;

frmprincipal.showmodal;

frmLogin.Close; // Fechar a tela de login (então é executado o OnClose do Form);

 

login:=true; // Setar variável como true;

end else begin

messageBox(handle,'Usuário ou Senha Inválida','ATENÇÃO!',MB_ICONERROR+mb_OK);

Senha.Text:='';

usuario.text:='';

usuario.SetFocus;

end;

end else

messageBox(handle,'Você deve preencher o nome de usuário e senha','ATENÇÃO!',MB_ICONERROR+mb_OK);

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro problema aqui do seu código amigo é que você não está realmente testando se o usuário e senha são válidos, só se estão preenchidos... em nenhum momento você testa se o login e senha são realmente válidos... seu código deveria ser algo assim:

 

procedure TFrmLogin.btnokClick(Sender: TObject);
begin

if (Senha.text<>'') and (usuario.text<>'') then
begin
	 //Fecha a query que contém o sql de validação
	 query.close;
	 //Envia os parâmetros da query
		 query.Parameters.ParamByName('usuario').Value := QuotedStr(usuario.text);
		 query.Parameters.ParamByName('senha').Value   := QuotedStr(senha.text);
	 //Prepara a query - não lembro agora se tem esse comando no ADOQuery
	 query.Prepare;
	 //Abre e executa a consulta com os parâmetros informados
	 query.Open;

	//Se a query retornar algum valor, encontrou usuário 
	 if not query.IsEmpty then
	 begin
		  frmlogin.Hide;
		  frmlogin.close;
		  frmprincipal.showmodal;
		  frmLogin.Close; // Fechar a tela de login (então é executado o OnClose do Form);

		  login:=true; // Setar variável como true;
	 end 
	 else 
	 begin
		  messageBox(handle,'Usuário ou Senha Inválida','ATENÇÃO!',MB_ICONERROR+mb_OK);
		  Senha.Text:='';
		  usuario.text:='';
		  usuario.SetFocus;
	 end;
end 
else
	 messageBox(handle,'Você deve preencher o nome de usuário e senha','ATENÇÃO!',MB_ICONERROR+mb_OK);
end;

Isso considerando que sua sql seja algo do tipo:

 

SELECT CODUSUARIO, NOME FROM TB_USUARIOS WHERE NOME = :usuario AND SENHA = :senha

 

[]'s

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.