Problema com campo login e senha

MySQL

Delphi

30/07/2017

Amigos, recententemente me deparei com uma situação inusitada, tenho um sistema em delphi que rodava em uma camada, com dbexpress e mysql e fazia o login comparando o valor do edit login e edit senha com valores login_user e Senha_user da tabela usuários sempre funcionou perfeitamente inclusive tinha implementado pra níveis de acesso... funcionava legal mesmo, mas ocorre que atualizei esse sistema para multi-camadas com datasnap e agora esse login nao quer funcionar mais, ele funciona buscando apenas o primeiro registro da tabela, se eu colocar o usuário e senha que se encontram na primeira posição da tabela o sistema faz o login normal, mas se eu por outro registro embora o mesmo atenda os requisitos para logar ele não reconhece e da erro no login. gostaria de saber se isso tem relação direta com o datasnap ou se alguém tem uma ideia melhora para um sistema de login com datasnap

o codigo que uso é o seguine:

procedure TFLogin.SpeedButton1Click(Sender: TObject);

begin
if (Edtlogin.Text = dm.CDSUsuariosLOGIN_USER.Value) and (edtsenha.Text = dm.CDSUsuariosNOVASENHA_USER) then

begin
MessageDlg((Pchar('Seja Bem vindo ' + dm.CDSUsuarios.FieldByName('login_user').AsString + '!!')), mtinformation, [mbOK], 0);
FPrincipal.Showmodal;
FLOGIN.CLOSE end
else
begin
Application.MessageBox('Verifique seu nome de usuário ou senha!!!!',
'Falha no processo de login!', MB_ICONERROR + MB_OK);

end;
end;

simples, mas sempre funcionou bem em apenas uma camada
Luiz Fagundes

Luiz Fagundes

Curtidas 0

Respostas

Natanael Ferreira

Natanael Ferreira

30/07/2017

Da maneira que seu código está, será verificado apenas o primeiro registro do Dataset.

Faça um teste com o código abaixo:

if (Edtlogin.Text <> EmptyStr) and (edtsenha.Text <> EmptyStr) then
    if (dm.CDSUsuarios.Locate('LOGIN_USER', Edtlogin.Text, [loCaseInsensitive])) and
      (dm.CDSUsuarios.FieldByName('NOVASENHA_USER').Value = edtsenha.Text) then
    begin
      MessageDlg((Pchar('Seja Bem vindo ' + dm.CDSUsuarios.FieldByName('login_user').AsString +
        '!!')), mtinformation, [mbOK], 0);
      FPrincipal.Showmodal;
      FLOGIN.Close
    end
    else
    begin
      Application.MessageBox('Verifique seu nome de usuário ou senha!!!!',
        'Falha no processo de login!', MB_ICONERROR + MB_OK);
    end
  else
  begin
    MessageBox(Handle, 'Voce deve preencher o nome de usuário e senha', 'Atenção',
      MB_ICONERROR + MB_OK);
    Edtlogin.SetFocus;
  end;


Veja este link:
[url:descricao=http://www.activedelphi.com.br/forum/viewtopic.php?
GOSTEI 0
POSTAR