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)
-   -   Detectar conexion Firebird (https://www.clubdelphi.com/foros/showthread.php?t=28382)

brandolin 17-12-2005 19:13:35

Detectar conexion Firebird
 
Hola foristas, estoy trabajando con DBExpres + Firebird 1.5 + D7 y lo que quiero hacer es una aplicacion que tiene dos bases de datos una local y otra remota (por lan o wan) y quiero poder controlar la existencia de la BD remota para eso cuando intento conectarme y pasa un determinado tiempo y no logro la conexion mando un aviso al operador. El problema es que no puedo manejar la excepcion de que no se conecta al servidor. Uso el siguiente codigo:

Código:

procedure TdmCentral.SQLConnRemBeforeConnect(Sender: TObject);
begin
  try
    vLocNombreINI := lowercase(Format('%s%s.ini', [ExtractFilePath( Application.ExeName ), _NombreSoftPosXamba]));
    with SQLConnRem do
    begin
      Params.Values['Database'] :=  LeerINI( vLocNombreINI, 'Base de Datos', 'Nombre Remota', lowercase(ExtractFilePath( Application.ExeName )+'NodosDB1.fdb'));
      Params.Values['User_Name'] := LeerINI(vLocNombreINI, 'Base de Datos', 'Usuario', 'sysdba');
      Params.Values['Password'] := LeerINI(vLocNombreINI, 'Base de Datos', 'Password', 'masterkey');
    end;
  except
    On E: Exception Do  If (E Is EIBInterBaseError) Then
    begin
      ShowMessage(E.Message);
      vConectada := False;
    End Else
        ShowMessage('Error desconocido');
  end;
end;


Lo que no logro que se execute es el except siempre salta un cartel de que el archivo no existe y alli muere todo. ¿Alguna ayudita? Gracias

jachguate 19-12-2005 18:12:07

Hace poco he tenido una experiencia con DBExpress y francamente me parece (puedo estar confundido) que su "variedad" de excepciones es realmente pobre: EDatabaseError.

Así, tu código jamás entrará al IF, pues la excepción que se eleva no es (ni por chiste) es un EIBInterbaseError.

Me veré obligado a profundizar un poco en el tema, pero por ahora, tengo la impresión que DBX apesta (al menos en este aspecto), pues no hay forma de saber el número de error nativo o algún código que nos oriente sobre cual fue el error que ocurrió cuando se tira contra un servidor SQL, lo que nos deja en la incomoda situación de procesar los mensajes de error y cruzar los dedos para que dichos mensajes nunca cambien en el motor (lo cual francamente es terriblemente improbable)

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 04:30:33.

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