problema com tela login

Delphi

15/09/2012

olá amigos..

tenho uma tela login o qual chamo de frmprincipal..uso delphi 7 e mysql

criei uma função para validar o campos usuario e senha..no caso a ideia seria o usuário do programa digitar
o seu login de acesso e senha e ao clicar no botão confirmar entrar no sistema..

o login e senha já estão cadastrados no banco de dados e ele tem 2 tentativas para logar no sistema..caso contrario
o sistema teria que fechar..

o nome da tabela com os campos usuario e senha e administrador..

segue o codigo no botão confirmar
procedure Tfrmprincipal.btnconfirmarClick(Sender: TObject);
begin
     if (edit1.Text = '') then
        begin
             Messagedlg('O campo "Usuário" deve ser preenchido!', mtError, [mbOk], 0);
        if edit1.CanFocus then
             edit1.SetFocus;
             Exit;
        end;
            if (edit2.Text = '') then
               begin
                 Messagedlg('O campo "Senha" deve ser preenchido!', mtError, [mbOk], 0);
                  if edit2.CanFocus then
                      edit2.SetFocus;
                      Exit;
                  end;
                  if logvalido (edit1.Text, edit2.Text) then
                     ModalResult:=mrOk
                      else
                        inc(contador);
                         if contador < 2 then
                           begin
                             messageDlg(Format('2 tentativas erradas a aplicação será encerrada!', [contador]), mtError, [mbOK], 0);
                             if edit2.CanFocus then
                                edit2.SetFocus;
                           end
                             else
                               begin
                                 showmessage('Esta aplicação será fechada!');
                                 ModalResult:=mrCancel;
                               end;
                           end;
                   
                  function Tfrmprincipal.logvalido(const usuario, senha: string): Boolean;
                  begin
                    with DM.ADOconexao, DM.ClientDataSet do
                      begin
                         if not connected then
                            connected :=true;
                         DM.ClientDataSet.Close;
                         DM.ClientDataSet.commandtext := 'select count(1) from administrador ' + 'where upper(usuario) = '+ Quotedstr(AnsiupperCase(trim(usuario))) + 'and senha = '+ Quotedstr(trim(senha));
                         DM.ClientDataSet.Open;
                         result := (Fields[0].AsInteger > 0);
                  end;

end;

só que ao clicar no botão confirmar aparece mensagem ..2 tentativas erradas a aplicação será encerrada! sendo que o login está ok e teria que entrar direto no sistema..

o sistema entra..só que dá esta mensagem antes..

grato quem puder ajudar
Mauricio Nicoli

Mauricio Nicoli

Curtidas 0

Respostas

Singular Ti

Singular Ti

15/09/2012

brother eu refiz seu código do botão confirmar... Dê uma olhada e veja se ajuda!!!
Se eu entendi bem o seu problema, acredito que esse código irá resolver..

procedure Tfrmprincipal.btnconfirmarClick(Sender: TObject);
begin
  if (edit1.Text = '') then raise Exception.Create('O campo "Usuário" deve ser preenchido!');
  if (edit2.Text = '') then raise Exception.Create('O campo "Senha" deve ser preenchido!');
  if logvalido (edit1.Text, edit2.Text) then
    ModalResult := mrOk
  else begin
    inc(contador)
    if contador < 2 then ShowMessage('Atenção, 02 tentativas erradas e a aplicação será encerrada!'+#13+'Tentativas realizadas: '+ IntToStr(contador));
    if contador = 2 then
    begin
      showmessage('Esta aplicação será fechada!');
      Application.Terminate;
    end;
  end;
end;


Abraços!!!
GOSTEI 0
Mauricio Nicoli

Mauricio Nicoli

15/09/2012

Obrigado amigo..

Alterei um pouco sua sugestão mas ficou muito bom grato..
procedure Tfrmprincipal.btnconfirmarClick(Sender: TObject);
begin
     if (edit1.Text = '') then
        begin
       Messagedlg('O campo "Usuário" deve ser preenchido!', mtError, [mbOk], 0);
        if edit1.CanFocus then
             edit1.SetFocus;
             Exit;
        end;
   if (edit2.Text = '') then
       begin
       Messagedlg('O campo "Senha" deve ser preenchido!', mtError, [mbOk], 0);
        if edit1.CanFocus then
             edit2.SetFocus;
             Exit;
        end;     
   if logvalido (edit1.Text, edit2.Text) then
      ModalResult := mrOk
   else
      begin
        inc(contador);
        if contador < 3 then ShowMessage('Atenção, 03 tentativas erradas e a aplicação será encerrada!');
        if contador = 3 then
        begin
           showmessage('Esta aplicação será fechada!');
           Application.Terminate;
       end;
     end;
end;
GOSTEI 0
POSTAR