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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-09-2011
asdbernardo asdbernardo is offline
Miembro
 
Registrado: sep 2011
Posts: 37
Poder: 0
asdbernardo Va por buen camino
Chequear Conexion mysql antes de abrir la aplicacion

Buenas forista del club delphi..

Ante todo un cordial saludo, vengo con otras duditas .. jeje espero me puedan sacar de ellas..

en primer lugar... estoy trabajando con mysql remoto, con el complemeto unidac de devart en delphi 2010, todo trabaja bien salvo a que cuando el servidor se cae, digamos lo apago, e intento logear me da un error de clientsocket excepcion, pero creo que es porque activo el componente a UniConnection1 que es conexiondb a true de manera manual, y como no lo consigue me marca ese error, que me recomiendan hacer? he estado intentando varias cosas logicas y lo que leo, pero no consigo dar con eso, ya que viene siendo una validacion digamos asi.. porque si no hay conexion al servidor debe mostrar el formulario y en un label que tengo alli colocarme Desconectado pero no llega hasta alli.

les dejo el codigo a ver

Código:
unit Login;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DBCtrls, UniProvider, MySQLUniProvider, DB, DBAccess,
  Uni, MemDS, ExtCtrls, DASQLMonitor, UniSQLMonitor;

type
  TfrmLogin = class(TForm)
    UniConnection1: TUniConnection;
    UniTable1: TUniTable;
    UniDataSource1: TUniDataSource;
    MySQLUniProvider1: TMySQLUniProvider;
    btnaceptar: TButton;
    qry: TUniQuery;
    txtusu: TEdit;
    txtpass: TEdit;
    btnsalir: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    lblintentos: TLabel;
    lblverifique: TLabel;
    lblconexion: TLabel;
    lblinfoserve: TLabel;
    qryLogin_Usuario: TStringField;
    qryLogin_password: TStringField;
    UniSQLMonitor1: TUniSQLMonitor;
    procedure btnaceptarClick(Sender: TObject);
    procedure btnsalirClick(Sender: TObject);
    procedure txtusuKeyPress(Sender: TObject; var Key: Char);
    procedure txtpassKeyPress(Sender: TObject; var Key: Char);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure UniConnection1Error(Sender: TObject; E: EDAError;
      var Fail: Boolean);

  private
    { Private declarations }

  public
    { Public declarations }

  end;

var
  frmLogin: TfrmLogin;
    nintentos: integer;
    veces: integer;
implementation

uses Principal;

{$R *.dfm}

procedure TfrmLogin.btnaceptarClick(Sender: TObject);
begin
qry.SQL.Clear;
qry.SQL.Add(' select Login_Usuario');
qry.SQL.Add(' , Login_Password');
qry.SQL.Add(' from Login');
qry.SQL.Add(' where Login_Usuario = Upper(:UserLogin)');
qry.SQL.Add(' and ');
qry.SQL.Add(' Login_Password = PASSWORD( PASSWORD( PASSWORD(:UserPassword)))');
qry.Params[0].Value := UpperCase(Trim(txtusu.Text));
qry.Params[1].Value := Trim(txtpass.Text);
qry.Open;
{Showmessage('Open DB');
ShowMessage('RecordCount is ' + IntToStr(qry.RecordCount));
 }
if qry.RecordCount > 0 then
            begin
          frmprincipal.Show;
          frmlogin.Hide;
            end
               else
    begin
      nIntentos := nIntentos + 1 ;       {Intentos del login}
      veces := 3;    {Veces limite de login}
      lblIntentos.Visible := true;
      lblIntentos.Caption := 'Intentos Restantes: ' + inttostr(veces-nIntentos);
       lblVerifique.Caption := 'Login Invalido, Verifique!';
      if (nIntentos < veces) then
        begin

           txtusu.Text := '';
           txtpass.Text :='';
           txtusu.SetFocus;
        end
        else if (nIntentos = veces) then
          begin
                    txtusu.Text := '';
           txtpass.Text :='';
           txtusu.SetFocus;
             frmLogin.ModalResult := mrCancel;

       Application.MessageBox( 'Maximo de Intentos, Sera notificado al Administrador',
  'Acceso denegado', MB_ICONSTOP );

             end;
            end;
end;


procedure TfrmLogin.btnsalirClick(Sender: TObject);
begin
close;
 end;






procedure TfrmLogin.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
      begin
   if MessageDlg('¿Estas Seguro Que Desea Salir del Login del Programa?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel then CanClose := False;
end;



procedure TfrmLogin.FormCreate(Sender: TObject);
begin

if UniConnection1.Connected = false then
 begin
 lblconexion.Caption := 'Desconectado';
 txtusu.Enabled:= false;
 txtpass.Enabled:= false;
 btnaceptar.Enabled:= false;

 end
 else
 begin
 lblconexion.Caption := 'Conectado';
 lblconexion.Font.Color:= clGreen;
 txtusu.Enabled:= true;
 txtpass.Enabled:= true;
 btnaceptar.Enabled:= true;

 end;
end;




procedure TfrmLogin.txtpassKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then                          { if it's an enter key }
   begin
       Key := #0;                                 { eat enter key }
       Perform(WM_NEXTDLGCTL, 0, 0);              { move to next control }
   end
end;



procedure TfrmLogin.txtusuKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then                          { if it's an enter key }
   begin
       Key := #0;                                 { eat enter key }
       Perform(WM_NEXTDLGCTL, 0, 0);              { move to next control }
   end
end;

end.
y este es el project source

Código:
program Project1;

uses
  Forms,
  Controls,
  WinInet,
  Login in 'Login.pas' {frmLogin},
  Principal in 'Principal.pas' {frmPrincipal},
  Agencia in 'Agencia.pas' {frmAgencia};


{$R *.res}
    var
    Respuesta: integer;
    comparacion: integer;
begin
  Application.Initialize;
  Application.Title := 'WB System';
  frmlogin := Tfrmlogin.Create(Application); //Cuando salta el error de que no                                           
                                                             hay error se para aca. cuando le  doy BREAK
  frmprincipal := Tfrmprincipal.Create(Application);
     try
    Respuesta := frmLogin.ShowModal;
      if Respuesta = mrOK then
        begin
      Application.Run;
         end;
  finally
    frmLogin.Free;
  end;
end.
Responder Con Cita
  #2  
Antiguo 26-09-2011
asdbernardo asdbernardo is offline
Miembro
 
Registrado: sep 2011
Posts: 37
Poder: 0
asdbernardo Va por buen camino
Gracias, Tema resuelto! Despues de investigar y mirar tanto.. pude resolverlo... con el try / except..
Código Delphi [-]
    try    
        frmlogin := Tfrmlogin.Create(Application);
        frmlogin.uniconnection1.connected :=true;
    except
    on E: Exception do
      frmlogin.uniconnection1.connected :=false;
    end;

Y desactivandole las notificaiones de excepciones del delphi en tools / options / debugger options / embarcadero lenguage / desmarcar notify on lenguage exceptions.

Con eso solventado el problema,

Gracias gente.!

Última edición por asdbernardo fecha: 26-09-2011 a las 07:47:19.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Chequear conexion a sql antigrondona Conexión con bases de datos 16 10-06-2011 00:28:58
Chequear que axista un archivo para arrancar la aplicacion webmasterplc Varios 2 22-02-2011 21:31:40
Como chequear la fecha de caducidad de mi aplicacion JoAnCa Varios 2 11-03-2009 14:52:17
Conexión de una aplicacion cliente en varias pc a un servidor mysql ctronx Conexión con bases de datos 6 16-07-2004 16:55:39
Chequear conexión a internet Walterdf Internet 12 14-05-2003 03:36:00


La franja horaria es GMT +2. Ahora son las 00:26:02.


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