Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-08-2006
Arturo Arturo is offline
Miembro
 
Registrado: sep 2004
Posts: 91
Poder: 20
Arturo Va por buen camino
como regresar a la pantalla de login personalizada al tener un error dbexpress

saludos uso dbexpress en delphi 7 y mysql 5.0 de los cual tengo una forma personalizada para ingresar al sistema, la cuestion es como le puedo hacer cuando un usuario se equivoque en el usuario o en el password y le de un error y le regrese a la misma pantalla para ingresarlos, ya que el siguiente codigo expuesto me da un error del odbc con el usuario que quise entrar, y al dar aceptar, me deja entrar a la pantalla principal, aunque no se conecte pero eso seria fatal.
creo que si hay un error lo mejor es que se cierre completamente con el application.terminate o bien volver a la pantalla de acceso.
Código PHP:
Fusuario:=Edit1.Text;
  
fpsw:=Edit2.Text;
 
  
with BD.SQLConnection do
  
begin
   Connected 
:= false;
   try
    
BD.SQLConnection.Params.Values['Database']:='DSN=BDEquipos;UID='Fusuario ';''PWD='+fpsw ';' 'DB=equipos;HOSTNAME=localhost';
  
Except
    on E
exception do begin
      ShowMessage
('Error al intentar abrir la base de datos.' + ^+
                  
'Confirme a Sistemas.');
     
Application.Terminate;
     
end;
   
end
  end

gracias.
Responder Con Cita
  #2  
Antiguo 19-08-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
No he usado mucho DbExpress pero:

1) Que error te da?
2) Que valor tiene ^M? (curiosidad)
3) Cuando activas la conección (SQLConnection)?
4) Para cerrar aplicacion FormPrincial.Close;

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 19-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Creo que sería bueno utilizar la metodología normal de excepciones:

- Tal y como haces, controlar la excepción, mostrar el mensaje y despues, en lugar de Application.Terminate, escribe "raise;", Esto hará que se levante la excepción producida de nuevo.

- Añade un ApplicationsEvents en tu forma principal, y en el evento OnException, vuelve a controlar ese error. Ahora en ese evento si puedes cerrar todas las ventanas que tengas y lanzar el login.

Podrías pensar... pues que lio, simplemente en el try.. except que tengo ahora cierro la ventana y muestro el login... pero tardarás 2 segundos en darte cuenta que en ese mismo try ... except necesitas hacer comprobaciones que requieren añadir otros "uses", necesitas variables que estan en otro sitio y puede que mucho más.

Saludos y espero te sirva.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 19-08-2006
jacanche jacanche is offline
Miembro
 
Registrado: may 2003
Ubicación: Campeche,Campeche,Mexico
Posts: 137
Poder: 21
jacanche Va por buen camino
Bueno, puedes intentar modificar el codigo de la ventana donde solicitas el nombre de usuario y contraseña, supongo que tienes mas o menos algo parecido a lo que se muestra abajo.
Se agrega una variable privada en la forma y una constante en la implementacion con las cuales se lleva la cuenta de cuantas veces se intenta el acceso, si se llega al numero maximo se termina la aplicación, asi como si le das click al boton cancelar.

Código Delphi [-]
unit Username;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, ExtCtrls, jpeg, Buttons;

type
  TUserNameDlg = class(TForm)
    UserNameEdit: TEdit;
    OkBtn: TBitBtn;
    CancelBtn: TBitBtn;
    procedure OkBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender : TObject);
    procedure FormCreate(Sender: TObject);
  private
    Tries : byte;
    function TryAgain : TModalResult;
  public
  end;

var
  UserNameDlg: TUserNameDlg;

implementation

{$R *.DFM}

const
   MAX_TRIES = 3;

procedure TUserNameDlg.OkBtnClick(Sender: TObject);
begin
  Fusuario:=Edit1.Text;
  fpsw:=Edit2.Text;
 
  with BD.SQLConnection do
  begin
   Connected := false;
   try
    BD.SQLConnection.Params.Values['Database']:='DSN=BDEquipos;UID='+ Fusuario + ';'+ 'PWD='+fpsw + ';' + 'DB=equipos;HOSTNAME=localhost';
  Except
    on E: exception do begin
      ShowMessage('Error al intentar abrir la base de datos.' + ^M +
                  'Confirme a Sistemas.');
     if Tries then //Esto permite que se intente 3 veces el acceso a la base de datos
          Tries := Tries +1
        else
          Application.Terminate;
     end;
   end
  end;  

end;

procedure TUserNameDlg.CancelBtnClick(Sender : TObject);
begin
  Application.Terminate;
end;

procedure TUserNameDlg.FormCreate(Sender: TObject);
begin
   Tries := 1;
end;
__________________
Saludos

Alfredo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pantalla Login enecumene OOP 5 04-07-2006 01:52:30
Error en form de login FGarcia Varios 2 05-02-2006 05:00:27
como crear una mascara personalizada Velia Impresión 4 15-11-2005 22:55:24
Como tener en un DBGrid un campo lookupComboBox como los del ObjectInstpector ? jpablor Conexión con bases de datos 1 29-08-2005 16:05:52
Error Could not login on network digital Tablas planas 3 19-02-2004 19:17:06


La franja horaria es GMT +2. Ahora son las 23:52:48.


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
Copyright 1996-2007 Club Delphi