Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error en Login. ¿como lo capturo y lanzo la excepcion? (https://www.clubdelphi.com/foros/showthread.php?t=48112)

gorsan 15-09-2007 19:13:22

Error en Login. ¿como lo capturo y lanzo la excepcion?
 
Hola a todos/as.

Vaya por delante que trabajo con interbase 6 y delphi 7.
Estoy intentando construir un formulario de entrada a la aplicacion. En el mismo pongo un combobox con todos los usuarios de la base de datos y debajo un Edit para introducir el password. No se como capturar la excepcion que se produce cuando el usuario se equivoca en la password. Estoy intentando el siguiente codigo pero me falla.
Código Delphi [-]
procedure TAcceso_Programa.BitBtn1Click(Sender: TObject);
begin
BitBtn1.Cursor:=crHourGlass;
BitBtn1.Enabled:=False;
with DM.IBDB do
 begin
   Connected:=False;
   LoginPrompt:=False;
   DataBaseName:='Nombre_Aplicacion.GDB';
   Params.Values['user_name']:=ComboBox1.Text;
   Params.Values['password']:=Edit1.Text;
   try
    Connected:=True;
    Form1.Show; //este es el formulario principal de la aplicacion
   except
    on ELoginFailed do ShowMessage('Contraseña incorrecta.');
   end;
 end;
Close;
end;

¿Alguien me puede echar un cable?

ContraVeneno 15-09-2007 19:22:58

Tal vez la clase de error no sea "EloginFailed"...

prueba utilizar:
Código Delphi [-]
try
 Connected:=True;
 Form1.Show; //este es el formulario principal de la aplicacion
except on E:Exception do 
     ShowMessage(E.ClassName+ ' - '+ inttostr(E.ErrorCode)+' - '+E.Message);
end;

Esto para ver la clase del error y posiblemente ver el número de error, para poder capturar específicamente ese error.

gorsan 15-09-2007 19:32:58

Ese codigo me da error
 
El error surge por ErrorCode.
De todas formas, una vez que vea que tipo de error da ¿como capturo la excepcion?

Gracias.

eduarcol 16-09-2007 01:17:33

cuando tengamos los datos qe te devuelve ese codigo te podremos explicar como capturarlo

Caral 16-09-2007 03:25:13

Hola
Perdón por la ignorancia.
A mi manera de ver tienes:
1 datamodule que contiene un IBDatabase (IBDB)
Si es asi, por que no hacer la conexión en el datamodule, al empezar la aplicación, por que variar los parámetros en el que seria el form del loguin.
Perdona, pero no lo entiendo, creo que complicas el proceso innecesariamente.
Para mi el form del login solamente debería de indicar la condición, verdadero o falso, en el caso de que sea el usuario correcto.
Saludos

ContraVeneno 18-09-2007 01:02:36

Cita:

Empezado por gorsan (Mensaje 231364)
El error surge por ErrorCode.
De todas formas, una vez que vea que tipo de error da ¿como capturo la excepcion?

Gracias.

Pues la capturas igual, a lo que yo me refería es que tal vez la excepción que te envía, no es de la clase "ELoginFailed", tal vez sea de la clase "EDBEngineError". Pero para estar seguros, por eso propuse que primero verificaras que la clase es la correcta.

Una vez que estés seguro de la clase de error que te envía, pues ya solo capturas esa clase...

Incluso (aunque no muy recomendable), podrías manejar "E:Exception" para capturar cualquier tipo de error. El problema con capturar todos los errores, es que no sabrías ni que clase es, ni que tipo de error. Alguna vez alguien dijo: "bien pudo haber caído una bomba nuclear y el mensaje de error sería el mismo.

En fin, primero asegúrate que la clase realmente sea "ELoginFailed".

waly2k1 18-09-2007 03:53:32

que rara manera de hacer un login
 
y por que no tienes todos los usuarios con sus respectivas password en un datasource y lo buscas cuando éste usuario presiona aceptar y comparas
dichas password?

O bien que el combo sea un dbLockupCombobox de manera que ya sabés quien es el usuario y un text donde ingrese su password.
algo así

Código:

if tblUsers.FieldByName('Password').Value = txtPassword.Text
begin
  fMain.Show;
end
else
begin
    ShowMessage('Password Incorrecta. Reingrese la misma');
end;

donde tblUsers es la tabla donde estan todos los datos de los usuarios.

Saludos y espero te sirva de algo. Consideralo, ya que si ingresa mal su password no es un error, o al menos
no deberías generar un error, simplemente le pides que reingrese.

ContraVeneno 18-09-2007 16:47:45

Es que según entiendo, este no se trata de que "un usuario" entre al sistema.

Se trata de que el sistema se conecte a la base de datos. Si el sistema no se conecta a la base de datos, no puedes usar dblookupcombobox, o compara la tabla usuario ni nada.

Al menos eso es lo que yo entendí.


La franja horaria es GMT +2. Ahora son las 20:24:39.

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