Problemas com Tela de Login

28/10/2009

0

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.
Marcio

Marcio

Responder

Posts

28/10/2009

Hermes Silva

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;
Responder

28/10/2009

Alan Souza

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.
    
Responder

28/10/2009

Marcio

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 ^^

Responder

29/10/2009

Alan Souza

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.

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar