Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Login Form (https://www.clubdelphi.com/foros/showthread.php?t=69167)

lbidi 30-07-2010 16:45:52

Login Form
 
Estimados foristas.

Tengo el siguiente codigo para validar la entrada al sistema.
No encuentro como hacer para que me pida la password 3 veces ( x ej ) , y luego si aborte.

Código Delphi [-]
procedure TLoginForm.LogInButtonClick(Sender: TObject);

begin
   If edUsuario.Text = '' then
        begin
            edUsuario.SetFocus;
            Exit;
        end;

        repeat
            Qry_Usuarios.Sql.Clear;
            Qry_Usuarios.SQL.Add('Select * from Usuarios Where Nombre = ' +       QuotedStr( edUsuario.Text ) ) ;
       Qry_Usuarios.Open;
       if not Qry_Usuarios.Eof then
       begin
           if Trim(Qry_Usuarios['CLAVE']) = Trim(passwordEdit.Text) then
           begin
               cUsuario     := edUsuario.Text;
               mNivel        := Qry_Usuarios['NIVEL'];
            modalresult := mrOK;
               Exit;
           end
           else
           begin
               MessageDlg('Contraseña inválida', mtWarning, [mbOk], 0);
               Inc( nCantidad );
               passWordEdit.SetFocus;
         modalresult := mrRetry;
               Exit;
           end;
       end
       else
       begin
           Application.MessageBox('Usted no está autorizado a utilizar este    sistema.', 'Sistema Protegido.');
           ModalResult := mrAbort;
           Exit;
       end;

    until nCantidad > 3;
    DM.Conn_Usuarios.IsConnected := False;
end;

donde me estoy equivocando??


pd : no entiendo porque no queda bien formateado. :(

delphi.com.ar 30-07-2010 20:08:34

A mi parecer, el ciclo repeat...until esta de mas. Tienes que tener en cuenta que este código se esta ejecutando todo dentro del evento OnClick del botón, y tu lo que necesitas es que el usuario escriba sus credenciales hasta tres veces, no que se valide tres veces la misma entrada.
Por otro lado, no estoy muy de acuerdo con poner las contraseñas en tablas de la base de datos, no es menor utilizar la propia seguridad de la base de datos para acreditarnos?

Saludos!

Caral 30-07-2010 21:13:51

Hola
Código Delphi [-]
procedure TLoginForm.LogInButtonClick(Sender: TObject);
var cuenta: Integer;
begin

     Qry_Usuarios.Sql.Clear;
     Qry_Usuarios.SQL.Text:= 'Select Nombre, Clave from Usuarios Where Nombre = :Cod';
     Qry_Usuarios.Params[0].Value:= edUsuario.Text;
     Qry_Usuarios.Active:= True;
   
   If Qry_Usuarios.RecordCount < 1 then
    Begin
       Cuenta := Cuenta + 1;
       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
       Edit1.Text := '';
       Edit2.Text := '';
       Qry_Usuarios.Active := False;
       If Cuenta = 3 then Close;
    end
    else
       If Qry_UsuariosClave.AsString = edClave.Text then
        Begin
           LoginOk := True;
           Clave := Qry_UsuariosClave.AsString;
           Nombre := Qry_Usuarios1Nombre.AsString;
           Qry_Usuarios.Active := False;
           Close;
           Cerrar := True;
        end
        else
         Begin
           Cuenta := Cuenta + 1;
           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
           edUsuario.Text := '';
           Qry_Usuarios.Active := False;
           If Cuenta = 3 then Close;
         end;
Saludos

lbidi 09-08-2010 22:32:54

Gracias.. probare.. y perdon por la demorada respuesta.

Saludos.


La franja horaria es GMT +2. Ahora son las 21:24:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi