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 17-12-2005
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 19-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


La franja horaria es GMT +2. Ahora son las 02:52:43.


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