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 26-01-2010
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
Capturar ESocketError en la aplicacion

Buenas os escribo porque he buscado por todo lados y estoy un poco desesperado.

Os pongo en situación, tengo una aplicación en 3 capas usando datasnap con TSocketConnection.

Tengo 3 servidores de aplicaciones donde los clientes se conectan con balanceo de carga, el problema es que cuando tengo que cambiar algo en la capa intermedia tengo que tirar abajo un servidor y todos los clientes que tengo conectado a ese se caen. Quiero implementar una rutina de reconexión, algo parecido a lo siguiente:

Código Delphi [-]
procedure ReconexionBD();
var
        servidor1, servidor2, i: integer;
begin

            frmEjecuntado:= TfrmEjecuntado.Create(Self);
            frmEjecuntado.Label1.Caption:= 'Esperando reconexión con el Servidor...';
            frmEjecuntado.Label2.Caption:= 'Por favor espere';
            frmEjecuntado.Show;
            frmEjecuntado.Update;
            datDatosRemoto.ConexionSocket1.Address:= '192.168.232.200';
            datDatosRemoto.ConexionSocket1.Address:= '192.168.232.200';
            datDatosRemoto.ConexionSocket1.Connected:= True;
            datDatosRemoto.ConexionSocket2.Connected:= True;
            frmEjecuntado.Destroy;
            ShowMessage('Reconexión establecida con éxito');

end;

Aquí cambio a uno de los otros dos sevidores que están operativos, esto lo tengo listo.

El problema es que no se donde meter la excepción siguiente:

Código Delphi [-]
  try

  except

  on e:ESocketError do
  ReconexionBD();
  end;

Donde la ponga, no me captura la excepción y me sale el siguiente cartel:



No se donde poner la excepcion para que me la capture y me ejecute el procedimiento.

La he puesto en la desconexión del Socket, en el Application.Run del proyecto principal, en el CreateModule del Modulo remoto.

A ver si alguno tiene alguna idea.

Saludos y gracias de antemano.
Responder Con Cita
  #2  
Antiguo 27-01-2010
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
Has probado a ejecutar tu aplicación fuera de delphi? en ahí si verás que la excepción es capturada
__________________
self.free;
Responder Con Cita
  #3  
Antiguo 27-01-2010
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
Lo tengo casi listo de la siguiente forma:

En el evente Create del Modulo de datos pongo lo siguiente:

Código Delphi [-]
Application.OnException := AppException;

Y llamo a un procedimiento llamado AppException que hace lo siguiente, comprueba si la excepción es la que busco y si lo es hago las instrucciones que me hacen falta:

Código Delphi [-]
procedure TdatDatosRemoto.AppException(Sender: TObject; E: Exception);
begin

        If (E.Message = 'mensaje que quiero capturar) then
        begin
     
            Instrucciones que quiero hacer.
          
        End;


end;

Me falta un poco para ver como reconectar con la BD, pero la excepción la capturo bien. Lo he probado fuera de delphi.

Gracias y saludos.
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
capturar una tecla en la aplicación 2-D@monic Varios 2 04-08-2008 20:01:26
Capturar imagen en una aplicacion Delphi 7.0 BuRtOn Gráficos 12 21-07-2008 22:34:32
Capturar evento de otra aplicación Wiarbumu API de Windows 2 06-07-2008 00:10:30
Capturar mensages de SQl en mi aplicacion Gedeon SQL 0 16-09-2006 23:05:24
problemas con ESocketError en delphi mflores Internet 7 26-12-2005 21:46:27


La franja horaria es GMT +2. Ahora son las 09:03:07.


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