Array
(
)

Problemas com Tela de Login

Marcio
   - 28 out 2009

bom dia pessoal!
como sou novato em delphi estou com um problema em conseguir acessar meu form principal atraves da tela de login, o problema eh o seguinte:

eu cadastro o usuario e senha pelo banco e tento chamar pelo delphi, soh q eu soh consigo acessar minha tela principal com o primeiro registro, caso eu tenha 10 usuarios cadastrados no banco ele soh entra com o primeiro registro q eu fiz... nao sei oq eu estou fazendo de errado, segue o codigo abaixo:

procedure TtelaLogin.Button1Click(Sender: TObject);
begin

if((dm.cdsLoginUSUARIO.AsString = edit1.Text) and (dm.cdsLoginSENHA.AsString = edit2.Text)) then
begin
telaPrincipal := TtelaPrincipal.Create(Application);
telaPrincipal.Showmodal;
telaLogin.Close;
end
else begin
ShowMessage('Senha ou login invalidos');
end;
edit1.clear;
edit2.Clear;
end;

end.

Obs.: estou uusando firebird com ibexpert e delphi 7.

Hermes Silva
   - 28 out 2009

Tenta isso ai ! coloque uma Query(qryLogin) e um dataset(dtsLogin) no DM, ligue o dtslogin no qrylogin. no comando sql do qrylogin digite o comando: select * from SUA_TABELA_USUARIOS , carregues os campos no qrylogin e faça o seguinte: procedure TtelaLogin.Button1Click(Sender: TObject); var s_sql: string; begin s_sql:= 'select * from SUA_TABELA_USUARIOS where USUARIO.USUARIO ='+#39+ (edit1.text) +39; s_sql:= s_sql+ ' and USUARIOS.SENHA ='+#39+ (edit2.text) +#39; dm.qrylogin.close; dm.qrylogin.sql.clear. dm.qrylogin.sql.add:= s_sql; dm.qrylogin.open; if((dm.qryLoginUSUARIO.AsString = edit1.Text) and (dm.qryloginSENHA.AsString = edit2.Text)) then begin telaPrincipal := TtelaPrincipal.Create(Application); telaPrincipal.Showmodal; telaLogin.Close; end else begin ShowMessage('Senha ou login invalidos'); end; edit1.clear; edit2.Clear; end;

0
|
0

Alanps
   - 28 out 2009

1°: ???
2°: Desse modo vc tá comparando sempre o usuário corrente do DataSet (o primeiro, no caso). Tenta dar um locate pelo nome de usuário antes, ou filtre o DataSet por ele, aí se ele existir no banco vc valida a senha, se não existir já pede pra confirmar o nome novamente.
    

0
|
0

Marcio
   - 28 out 2009

testei a primeira ajuda e nao deu certo... da o seguinte erro "Not enough actual parameters" na linha de comando "dm.querylogin.sql.Add := s_sql;" mesmo assim obrigado ;)

Alan sera q vc nao poderia me dar um exemplo?
como eu disse sou novato em programaçao ^^

0
|
0

Alanps
   - 29 out 2009

Assim: pelo prefixo, vc tá usando ClientDataSet, então na fonte dele (Query ou equivalente), vc coloca o SQL

select nome, senha from sua_tabela where nome = :nome

assim vc vai filtrar o usuário passado, então vc só vai abrir o DataSet no evento do botão. 


procedure TtelaLogin.Button1Click(Sender: TObject);
begin

dm.cdsLogin.Close;
dm.cdsLogin.ParamByName('nome').AsString := Edit1.Text;
dm.cdsLogin.Open;

if cdsLogin.IsEmpty then
begin
Application.MessageBox('Usuário Inexistente!!','Atenção',MO_OK + MB_ICONWARNING);
Edit1.SetFocus;
end
else
begin
if(dm.cdsLoginSENHA.AsString = edit2.Text)) then
begin
telaPrincipal := TtelaPrincipal.Create(Application);
telaPrincipal.Showmodal;
telaLogin.Close;
end
else
ShowMessage('Senha inválida!!');
end;
end;

só que vendo seu código, há outros pontos meio estranhos: por exemplo, qual seu Main Form na aplicação? se for o de login, está errado, o  certo é ser o telaPrincipal.


0
|
0