Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con un codigo de cambio de clave. (https://www.clubdelphi.com/foros/showthread.php?t=75214)

DOS 05-08-2011 02:25:00

Ayuda con un codigo de cambio de clave.
 
Hola a todos, de nuevo preguntando por aqui.
Tengo que hacer este ejercicio, crear una tabla en paradox, con nro, clave y usuario. El sistema me debe permitir cargar usuario, contraseña o clave, ingresar una nueva clave y confirmarla, si hay algun error enviar un mensaje sino modificar la clave de la tabla.
Mis conocimientos son basicos, y el codigo que les muestro, tambien lo es, se muy bien que debe haber mejores formas y comandos para hacer lo que necesito, pero quien me pueda ayudar, le pediria que se mantenga dentro de esos parametros, para poder yo entenderlo, gracias.
Código Delphi [-]
procedure TForm3.Button2Click(Sender: TObject);
var
    apellido, contrasena, newclave, clavebis: String;
   
begin
    apellido := Edit1.Text;    // apellido
    contrasena := Edit2.Text;  // clave antigua
    newclave:= Edit3.Text;     // nueva clave
    clavebis:= Edit4.text;  //  repite nueva clave
    
    edit1.Clear;                 //  limpio los edit
    edit2.Clear;
    edit3.Clear;
    edit4.Clear;
    Table1.First;
    edit1.SetFocus;       // lo focaliso en el primer edit
    
    while Table1.eof = false do     //  corro la tabla
    begin             //comparo el apellido y la clave
        if (Table1.FieldByName('Apellido').AsString = apellido) and
           (Table1.FieldByName('Clave').AsString = contrasena) then
            if  newclave = clavebis then    //comparo las nuevas claves
                begin        //Modifico la clave
                  table1.Edit;
                  table1.FieldByName('Clave').AsString:=newclave;
                  table1.Post;
                  table1.Next;
                 end
             else
               ShowMessage('Clave o Nombre Incorrectos');
     end;

end;

end.

El programa me tira error no cuando lo compilo sino cuando lo corro.

Caral 05-08-2011 02:52:06

Hola
1- Cual error.
2- Esto no se ha visto en el foro últimamente muchas veces ?
Sera un dejavú ?????.
Saludos

Caral 05-08-2011 03:05:59

Hola
A ver:
1- Tienes un usuario y una clave en la tabla.
2- Una vez que el usuario y la clave son correctos el programa tiene que poder MODIFICAR la clave de ese usuario.
Es asi o entiendo mal ?.
Saludos

DOS 05-08-2011 03:13:23

El error dice sos un pelo"@~$po te olvidaste de activar la tabla.
Era para ver si estabas atento Caral, me volvi loco durante un par de dias y cuando preguntaste, cual error?, me pregunte lo mismo y ahi me di cuenta. Saludos y perdonen a este newbie.

Caral 05-08-2011 03:15:36

Hola
Pues esto se puede llamar ''un caso auto resuelto'':D
Saludos

ecfisa 05-08-2011 03:33:16

Hola DOS.

Una observación sobre el código que tarde o temprano te dará un dolor de cabeza:
Si no sacas el Table1.First; de dentro del condicional (if newclave = clavebis then), sólo va a cambiar la clave si el dato buscado corresponde al primer registro y luego sea este caso o no, el programa va quedar frizado... ;)

Mejor sería:
Código Delphi [-]
...
  while Table1.eof = false do     //  corro la tabla
  begin 
     if ...
       if ...
       begin
          ...
       end;
     Table1.Next;
  end;
Un saludo. :)

Caral 05-08-2011 03:40:08

Hola
Cita:

Empezado por ecfisa (Mensaje 408599)
.........
Si no sacas el Table1.First; de dentro del condicional (if newclave = clavebis then), ..........

Código Delphi [-]
...
  while Table1.eof = false do     //  corro la tabla
  begin 
     if ...
       if ...
       begin
          ...
       end;
     Table1.Next;
  end;

:D:D
Saludos

ecfisa 05-08-2011 03:43:59

Errare humanum est, la intención fue buena...:D:D:D

Edito: Ya hacía rato que no me mandaba una... :(:D

Caral 05-08-2011 03:47:22

Hola
Cámbialo, que para eso eres moderador..:)
Aprovéchate del poder...:D:D:D
Lo que pasa es que sigo tus pasos amigo.;)
Saludos

ecfisa 05-08-2011 03:54:11

Cita:

Lo que pasa es que sigo tus pasos amigo.
Realmente me halaga, no creo ser merecedor de tanta antención... :D

Un abrazo. :)

DOS 05-08-2011 03:55:39

Ok, gracias ecfisa, le realice alguna modificacion.

Código Delphi [-]
 Lo mismo de antes +
  if  newclave = clavebis then    //comparo las nuevas claves
  begin        //Modifico la clave
    table1.Edit;
    table1.FieldByName('Clave').AsString:=newclave;
    table1.Post;
    table1.Next;
    if application.messagebox('la clave a sido cambiada correctamente'+
          ', ¿desea volver al menu principal?',
          'consulta',MB_OKcancel+MB_iconquestion)=IDOK then
    begin
      form3.Hide;
      form2.Show;
    end;
  end
  else
    ShowMessage('Clave o Nombre Incorrectos');
end;
end.

El problema ahora es si ingreso mal un dato, despues de aparecer el mensaje de clave incorrecta, se cuelga ahi.

Caral 05-08-2011 03:55:43

Hola
A los Maestros hay que seguirlos amigo.
Si no, como se aprende.
Saludos

DOS 05-08-2011 03:58:29

Juro que no toque nada :( no se porque sale horizontal, ya lo edite

ecfisa 05-08-2011 04:23:40

Hola DOS.

En realidad me referería a que movieras la línea así:
Código Delphi [-]
...
    while Table1.eof = false do     //  corro la tabla
    begin             //comparo el apellido y la clave
      if (Table1.FieldByName('Apellido').AsString = apellido) and
         (Table1.FieldByName('Clave').AsString = contrasena) then
          if  newclave = clavebis then    //comparo las nuevas claves
          begin        //Modifico la clave
            table1.Edit;
            table1.FieldByName('Clave').AsString:=newclave;
            table1.Post;
            //  table1.Next;  --> De aquí
          end
          else
            ShowMessage('Clave o Nombre Incorrectos');
       table1.Next; // < --- A esta posición
    end;
...
(Tomando en cuenta el primer código)

Un saludo.

Nota: Ya corregí la identación del mensaje #11 ( creo que a eso te referías ).

DOS 09-08-2011 01:06:26

Muchas gracias y disculpen la tardanza en responder.


La franja horaria es GMT +2. Ahora son las 03:25:38.

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