Logar usuário no sistema.
17/09/2004
0
BtnLogar.Tag:=BtnLogar.Tag + 1; IF DmBasedados.IBTab_Usuario.Locate(´Login´,EdtLogin.Text,[]) Then IF Dmbasedados.IBTab_UsuarioSENHA.Value = EdtSenha.Text Then begin Application.CreateForm(TFrmPrincipal,FrmPrincipal); FrmPrincipal.ShowModal; FrmPrincipal.Release; EparaFechar:=True; Close; end ELSE begin MessageDlg(´Senha Incorreta!´,Mtinformation,[mBOK],0); Edtsenha.Text:=´´; EdtSenha.SetFocus; end ELSE Begin MessageDlg(´Usuário Não Existe!´,Mtinformation,[mBOK],0); EdtLogin.Text:=´´; EdtLogin.SetFocus; end; If BtnLogar.Tag = 3 Then Application.Terminate; end;
Entrei antes e registrei um usuario com o nome ´ MARIA´ e senha ´1234´ coloco sempre o nome e senha correto mas a mensagem senha imcorreta me aprece sempre.
Tem alguém que pode me ajudar.
elmarinho.
Peninha
Posts
18/09/2004
Vinicius2k
Creio ser apenas um problema de estruturação de código...
Observe que no seu código o primeiro bloco do primeiro desvio (IF) não foi delimitado com begin..end
Eu implementaria assim :
BtnLogar.Tag:=BtnLogar.Tag + 1; { **** } if DmBasedados.IBTab_Usuario.Locate(´Login´,EdtLogin.Text,[]) Then begin if Dmbasedados.IBTab_UsuarioSENHA.Value = EdtSenha.Text Then begin Application.CreateForm(TFrmPrincipal,FrmPrincipal); FrmPrincipal.ShowModal; FrmPrincipal.Release; EparaFechar:=True; Close; end else begin MessageDlg(´Senha Incorreta!´,Mtinformation,[mBOK],0); Edtsenha.Text:=´´; EdtSenha.SetFocus; end; end else begin MessageDlg(´Usuário Não Existe!´,Mtinformation,[mBOK],0); EdtLogin.Text:=´´; EdtLogin.SetFocus; end; { **** } If BtnLogar.Tag = 3 Then Application.Terminate;
Espero ter ajudado...
T+
18/09/2004
Peninha
Obrigado.
elmarinho.
18/09/2004
Vinicius2k
Nesta linha:
if Dmbasedados.IBTab_UsuarioSENHA.Value = EdtSenha.Text
o resultado da comparação é False.
Vc não teria mais de um usuário ´MARIA´ na base?
Lembre-se de que vc está localizando o primeiro e se a coluna ´Login´ não for chave primária, vc pode ter outro usuário com o mesmo nome e senha diferente...
T+
18/09/2004
Sandra
Sem desmerecer as respostas do Vinícius, sugiro uma alteração no 2º if. Não sei qual o banco de dados está utilizando, mas... altere para:
BtnLogar.Tag:=BtnLogar.Tag + 1; IF DmBasedados.IBTab_Usuario.Locate(´Login´,EdtLogin.Text,[]) Then IF Dmbasedados.IBTab_UsuarioSENHA.asString = EdtSenha.Text Then begin ...
Pode ser que funcione. :D
Outro detalhe que estava vendo é quando o ´usuário não foi encontrado´, você está limpando apenas o Edit do Login. Acho que seria interessante limpar também o Edit da senha. Assim:
... MessageDlg(´Usuário Não Existe!´,Mtinformation,[mBOK],0); EdtLogin.Text:=´´; Edtsenha.Text:=´´; EdtLogin.SetFocus; ...
Boa sorte!!
18/09/2004
Vinicius2k
A sua solução, Sandra, é a mais correta, pq .Value é Variant, e Variants são mais lentos, mas, em tese, até onde eu sei, o resultado deveria ser o mesmo... mas não custa nada fazer o teste... :wink:
Clique aqui para fazer login e interagir na Comunidade :)