Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Conectar a Firebird con Multihilo (https://www.clubdelphi.com/foros/showthread.php?t=87810)

Jose Roman 28-02-2015 00:20:11

Conectar a Firebird con Multihilo
 
Cordial saludo,

Resulta que trabajo con Firebird 2.5, ZeosLib y Delphi XE; en un form tengo un TProgressBar y deseo que conectarme a una base de datos, pero mientras se realiza la conexion la barra de estado avanza como para indicarle al usuario que se esta conectando, se que esto lo debe hacer con un multihilo pero soy muy novato en ello, y si lo hago normalmente y la conexion no se realiza la aplicacion se congela mientras espera respuesta y deseo que no suceda eso. Alguien tiene un ejemplo de como se haria esto?

Gracias de antemano por sus valiosos aportes.

nlsgarcia 28-02-2015 02:15:05

Jose Roman,

Cita:

Empezado por Jose Roman
...tengo un TProgressBar y deseo conectarme a una base de datos, pero mientras se realiza la conexión la barra de estado avanza como para indicarle al usuario que se esta conectando...se que esto lo debe hacer con un multihilo...

:rolleyes:

Revisa esta información:
Espero sea útil :)

Nelson.

Casimiro Notevi 28-02-2015 11:32:49

No encuentro nada útil una barra de progreso para conectar a la base de datos, es algo que tarda milésimas de segundos, no sirve para nada :confused:

Jose Roman 28-02-2015 16:38:30

La barra de progreso no es para conectarse, es para indicarle al usuario que se esta conectando y que no se quede congelada la aplicación sin saber que proceso esta realizando, debido a que muchas veces se demora en conectarse por el tipo de conexión que el cliente maneja. (En Colombia es típico en algunas organizaciones)

Casimiro Notevi 28-02-2015 18:48:29

Cita:

Empezado por Jose Roman (Mensaje 489472)
La barra de progreso no es para conectarse, es para indicarle al usuario que se esta conectando y que no se quede congelada la aplicación sin saber que proceso esta realizando, debido a que muchas veces se demora en conectarse por el tipo de conexión que el cliente maneja. (En Colombia es típico en algunas organizaciones)

¿Es una conexión por internet?

Jose Roman 28-02-2015 20:10:23

Es local, es entre dos torres pero en una torre solo llega con wifi por el tipo de edificio y presupuesto , también a veces se presenta muchos problemas de cortes de energía lo cual hace que se reinicie el router y se corte la comunicación con el servidor que tiene la base de datos, por eso mientras se está conectado y hay conexión no hay problema, pero si se corta deseo que no se congele la aplicación solo que muestre como una barra de progreso continúa que indica que se está estableciendo una conexión y si no se da muestra el mensaje pero el usuario verá una barra que le estará indicando que espere mientras eso se realiza

ecfisa 28-02-2015 21:06:11

Hola Jose Roman.

Yo coincido con Casimiro, no me parece necesario recurrir al uso de threads complicando una situación intrínsecamente simple.

Una opción sencilla es usar un mensaje para avisar al usuario que se está intentando la conexión y otro para el caso que falle, algo similar a esto:
Código Delphi [-]
uses Windows, Forms, Dialogs;

procedure TDataModule2.DataModuleCreate(Sender: TObject);
const
   MSG1 = 'Intentando conectar con la base de datos.' + #10 + #10 +
          'Esto puede demorar, aguarde un momento por favor.';
   MSG2 = 'Error al tratar de establecer la conexión con la base de datos';
var
  dlg: TForm;
begin
  with IBDatabase1 do
  begin
    DatabaseName:= 'TU_SERVER:C:\TU_PROGRAMA\BD\TU_BD.FDB';
    Params.Clear;
    LoginPrompt:= False;
    Params.Add('user_name=sysdba');
    Params.Add('password=masterkey');
    try
      dlg:= CreateMessageDialog(MSG1, mtInformation, []);
      dlg.Show;
      dlg.Refresh;
      Open;
    except
      dlg.Close;
      MessageBox(0, MSG2, '', MB_ICONERROR);
      Application.Terminate;
    end;
    dlg.Close;
  end;
end;

Saludos :)

Jose Roman 28-02-2015 21:57:28

Gracias por sus respuestas y aportes, haré este último ejemplo sobre el cuadro de diálogo


La franja horaria es GMT +2. Ahora son las 04:56:28.

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