Fazer login no sistema.
Ola pessoal. Estou tentando a alguns dias fazer este código funcionar, mas infelizmente ainda não tive nenhum progresso.
Será que alguém ai pode me ajudar com alguma dica ou quem sabe uma forma mais facil.
Peninha.
procedure TFrmSenha.BtnLogarClick(Sender: TObject); begin With DmBasedados.IBQuery_Login do Begin Sql.Clear; Sql.Add(´Select lOGIN, SENHA From TabCad_Usuario´); SQL.add(´Where Login like ´+#39+(edtLogin.Text)+39´ and senha like ´+39+(edtsenha.Text)+39´´); Open; end; If Dmbasedados.IBQuery_Login.IsEmpty then Begin Application.MessageBox (´ACESSO NEGADO´,´DADOS INVÁLIDOS´,mb_IconError + mb_OK); EdtLogin.Text:=´´; EdtSenha.Text:=´´; EdtLogin.SetFocus; END else begin MessageDlg(´CONFIRMAMOS SUA SENHA!´, mtInformation, [mbOK],0); end; Application.CreateForm(TFrmPrincipal,FrmPrincipal); FrmPrincipal.ShowModal; FrmPrincipal.Release; end;
Será que alguém ai pode me ajudar com alguma dica ou quem sabe uma forma mais facil.
Peninha.
Peninha
Curtidas 0
Respostas
Otto
25/09/2004
a senha grava no banco é criptografada, ou é gravada normal mesmo??
vc pode usar um Locate:
vc pode usar um Locate:
if not Zq1.Locate(´Login;Senha´,VarArrayOf([edLogin.Text, edSenha.Text]), [loCaseInsensitive]) Then begin MessageBox(0,´O Login e ou Senha não confere.´ +13+ ´Favor tente novamente.´,´VALIDAÇÃO´, MB_OK+MB_ICONERROR); edLogin.Clear; edSenha.Clear; edLogin.SetFocus(); end
GOSTEI 0
Peninha
25/09/2004
Amigo Otto.
Por favor se vc poder ser mais especifico eu agradeceria muito.
Infelizmente não consegui assimilar sua resposta.
Obrigado.
Por favor se vc poder ser mais especifico eu agradeceria muito.
Infelizmente não consegui assimilar sua resposta.
Obrigado.
GOSTEI 0
Bruno Belchior
25/09/2004
olha só
espero que ajude, a ideia é retornar pelo menos um registro onde a senha é igual o EdSenha.Text e o login é igual ao EdLogin.Text para que o login seja válido...
procedure TFrmSenha.BtnLogarClick(Sender: TObject); begin With DmBasedados.IBQuery_Login do Begin Sql.Clear; Sql.Add(´Select lOGIN, SENHA From TabCad_Usuario´); SQL.add(´Where Login = :ParLogin and Senha = :ParSenha´´); SQL.ParamByName(´ParLogin´).Value := EdLogin.Text; SQL.ParamByName(´ParSenha := EdSenha.Text; Open; end; If (Dmbasedados.IBQuery_Login.RecordCount=0) then Begin Application.MessageBox (´ACESSO NEGADO´,´DADOS INVÁLIDOS´,mb_IconError + mb_OK); EdtLogin.Text:=´´; EdtSenha.Text:=´´; EdtLogin.SetFocus; END else begin MessageDlg(´CONFIRMAMOS SUA SENHA!´, mtInformation, [mbOK],0); end; Application.CreateForm(TFrmPrincipal,FrmPrincipal); FrmPrincipal.ShowModal; FrmPrincipal.Release; end;
espero que ajude, a ideia é retornar pelo menos um registro onde a senha é igual o EdSenha.Text e o login é igual ao EdLogin.Text para que o login seja válido...
GOSTEI 0
Otto
25/09/2004
Amigo Otto.
Por favor se vc poder ser mais especifico eu agradeceria muito.
Infelizmente não consegui assimilar sua resposta.
Obrigado.
assim, na tabela, vc tem o campo login e o campo senha..
quando vc cadastra um novo usuário, vc criptografa a senha pra poder salvar no banco, ou salva normal, exemplo:
login: otto senha: blablabla // modo normal login: otto senha: df87a890a07ds // modo criptografado
na rotina que te mostrei, faz um locate onde o campo Login é igual ao valor que ta no edLogin e assim com a senha...
seguinte:
if not Query.Locate(´LOGIN;SENHA´,VarArrayOf([editLogin.Text, editSenha.Text]),[loCaseInsensitive]) Then // não achou nada
GOSTEI 0
Peninha
25/09/2004
Amigos, qualquer código que ue possa usar, quando eu clicko no botão BtnLogar mesmo que os dados que inseridos nele estiverem errados me retornado uma mensagem que o campo Cod_Cliente da Tabela Cad_Usuario não foi encontrado.
Verifiquei todas as possibilidadesm mais isto não pode ser possivel, por que se ue for cadastrar um novo usuario ele é gravado.
O que pode estar acontecendo.
Verifiquei todas as possibilidadesm mais isto não pode ser possivel, por que se ue for cadastrar um novo usuario ele é gravado.
O que pode estar acontecendo.
GOSTEI 0
Ariovaldo
25/09/2004
Peninha vamos ver se entendi para te ajudar
A Primeira coisa que é estranho é vc dar um Like no campo usuario e Senha na minha opnião isso não deve existir pois o sistema pode validar coisa que não existe, mas faz o select desta forma:
procedure TFrmSenha.BtnLogarClick(Sender: TObject);
begin
With DmBasedados.IBQuery_Login do
Begin
Sql.Clear;
Sql.Add(´Select lOGIN, SENHA From TabCad_Usuario´);
SQL.add(´Where Login like :login´);
SQL.Add(´And Senha Like :Senha´);
Parambyname(´Login´).asstring := ´¬´ + edtLogin.Text + ´¬´;
Parambyname(´Senha´).asstring := ´¬´ + edtsenha.Text + ´¬´;
Open;
end;
If Dmbasedados.IBQuery_Login.IsEmpty then
Begin
Application.MessageBox (´ACESSO NEGADO´,´DADOS INVÁLIDOS´,mb_IconError + mb_OK);
EdtLogin.Text:=´´;
EdtSenha.Text:=´´;
EdtLogin.SetFocus;
END
else
begin
MessageDlg(´CONFIRMAMOS SUA SENHA!´, mtInformation, [mbOK],0);
end;
Application.CreateForm(TFrmPrincipal,FrmPrincipal);
FrmPrincipal.ShowModal;
FrmPrincipal.Release;
end;
Espero ter ajudado
A Primeira coisa que é estranho é vc dar um Like no campo usuario e Senha na minha opnião isso não deve existir pois o sistema pode validar coisa que não existe, mas faz o select desta forma:
procedure TFrmSenha.BtnLogarClick(Sender: TObject);
begin
With DmBasedados.IBQuery_Login do
Begin
Sql.Clear;
Sql.Add(´Select lOGIN, SENHA From TabCad_Usuario´);
SQL.add(´Where Login like :login´);
SQL.Add(´And Senha Like :Senha´);
Parambyname(´Login´).asstring := ´¬´ + edtLogin.Text + ´¬´;
Parambyname(´Senha´).asstring := ´¬´ + edtsenha.Text + ´¬´;
Open;
end;
If Dmbasedados.IBQuery_Login.IsEmpty then
Begin
Application.MessageBox (´ACESSO NEGADO´,´DADOS INVÁLIDOS´,mb_IconError + mb_OK);
EdtLogin.Text:=´´;
EdtSenha.Text:=´´;
EdtLogin.SetFocus;
END
else
begin
MessageDlg(´CONFIRMAMOS SUA SENHA!´, mtInformation, [mbOK],0);
end;
Application.CreateForm(TFrmPrincipal,FrmPrincipal);
FrmPrincipal.ShowModal;
FrmPrincipal.Release;
end;
Espero ter ajudado
GOSTEI 0
Peninha
25/09/2004
È amigo infelizmente não adiantou.
Vou tentando por aqui.
Obrigado.
Vou tentando por aqui.
Obrigado.
GOSTEI 0
Beppe
25/09/2004
Não se usa like pra encontrar dados exatos, como é o caso. Assim basta ter um único usuário cadastrado para o proceimento suceder. Além disso o apóstrofo(#39) era desnecessário.
Eu particularmente prefiro abrir uma janela de login dentro do form principal, e não o contrário.
with DmBasedados.IBQuery_Login do begin Sql.Clear; Sql.Add(´select LOGIN, SENHA from TabCad_Usuario´); Sql.Add(´where LOGIN = ´ + edtLogin.Text + ´ and SENHA = ´ + edtSenha.Text); Open; try if IsEmpty then begin Application.MessageBox(´ACESSO NEGADO´, ´DADOS INVÁLIDOS´, mb_IconError + mb_OK); edtLogin.Text := ´´; edtSenha.Text := ´´; edtLogin.SetFocus; end else begin MessageDlg(´CONFIRMAMOS SUA SENHA!´, mtInformation, [mbOK], 0); Application.CreateForm(TFrmPrincipal, frmPrincipal); try frmPrincipal.ShowModal; finally frmPrincipal.Release; end; end; finally Close; end; end;
Eu particularmente prefiro abrir uma janela de login dentro do form principal, e não o contrário.
GOSTEI 0
Peninha
25/09/2004
Bom pessoal muito obrigado por terem me ajudado em mais um problema, pois juntando informações de várias perguntas consegui finalmente.
Agradeço a todos aqueles que me ajudaram e até a próxima.
Peninha.
Agradeço a todos aqueles que me ajudaram e até a próxima.
Peninha.
GOSTEI 0
Ariovaldo
25/09/2004
Peninha qual o erro que esta dando este código??
GOSTEI 0