Ver Mensaje Individual
  #9  
Antiguo 30-07-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Reputación: 27
Caral Va por buen camino
Hola
Bien, para empezar:
1- recorrer la tabla no es correcto, imaginate que tengas muchos datos, esto hace que el programa sea lento.
2- hacer o crear variables donde no se necesitas es gastar recursos, el programa crece innecesariamente.
3- Leer tanto el nombre como la clave en un solo IF es un error, ya que no necesariamente el usuario estara mal o la clave.
Bueno, para mi algo sencillo es esto:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Filtro: String;
 Cuenta: integer;
 begin
 Table1.Filtered:= False;
 Filtro := 'Nombre = '+Edit1.Text;
 Table1.Filter := Filtro;
 if table1.FieldByName('Nombre').AsString = Edit1.Text then
 begin
 Cuenta := Cuenta + 1;
 Table1.Filtered:= False;
 Filtro := 'Clave = '+Edit2.Text;
 Table1.Filter := Filtro;
 if table1.fieldbyname('Clave').Asstring = Edit2.Text then
 begin
 Form2:=TForm2.Create(self);
 try
 Form1.Visible:= False;
 Form2.ShowModal;
 finally
 Form2.Free;
 end;
  end
     else
         Begin
           Cuenta := Cuenta + 1;
           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
           Edit1.Text := '';
           Edit1,SetFocus;
           If Cuenta = 3 then Close;
         end;
 end;
Como ves, se filtra solo el nombre, si es el correcto entonces se filtra la clave, no se pierde tiempo ni recursos.
Se inicia la cuenta desde la búsqueda del nombre.
Se crea el form 2, no se hace desde el principio, es una mala practica.
Simplemente se esconde el form 1, no hace falta nada mas.
Se elimina el form 2 cuando el programa termina.
Saludos
__________________
Siempre Novato
Responder Con Cita