Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-11-2023
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
Manejo de errores de conexion con MySQL

Hola, amigos;

en una aplicación de Delphi 7 estoy queriendo manejar los errores de conexión perdida que por "tiempo de espera superado" les aparecen a los usuarios eventualmente.

Para no repetir una estructura Try...Except en todas las operaciones a la base de datos (OPEN, EXECUTE, DELETE, etc.) pensé crear un procedimiento en el DM al cual llamar y que desde ahí se manejara la excepción, aparentemente parece funcionar (aún no he remplazado todas las llamadas a la BD con ese procedimiento), pero estoy casi seguro que debe haber una mejor y más elegante forma de hacerlo, así que por favor, si después de revisar el código y analizando mi necesidad tienen alguna sugerencia para mejorarlo o de plano reemplazarlo, por favor coméntenlo.

Nota:
el código solo tiene las llamadas OPEN a la base de datos por el momento

Código Delphi [-]
procedure TDM.OperacionBD(xcontrol : TMyQuery; xoperacion : string);
var
     x : integer;
begin
     try
          if xoperacion='OPEN' then xcontrol.Open;
     except
          on E: EMyError do
          begin
               if Ansipos('connection',E.Message) > 0 then
               begin
                     MessageDlg(' Conexion a la BD caida, tratando de reconectar.', mtError, [mbOK], 0);
                    For x := 0  to 4 do
                    begin
                         DM.Dirdatos.Connect;
                         if DM.Dirdatos.Connected then Break;
                    end;
                    if DM.Dirdatos.Connected = false then
                    begin
                          MessageDlg('No fue posible reconectar la BD, revisa tu conexion a la red.', mtError, [mbOK], 0);
                         TerminateProcess(GetCurrentProcess, 0);
                         Exit;
                    end;
               end;
          end;
    end;
end;
Responder Con Cita
  #2  
Antiguo 16-11-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
Revisa los eventos de tus componentes para el manejo de las excepciones
Responder Con Cita
  #3  
Antiguo 16-11-2023
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
Ya lo hice, creo que algo me falta de entender en ese apartado; uso los componentes MyDAC de DEVexpress.

En el componente de conexión hay un evento ONConnectionLost que se supone debe ayudar con eso, pero el código que he encontrado en internet no ayuda en nada y no reconecta, se supone que debe ser algo tan simple como:

Código Delphi [-]
procedure TDM.DirdatosConnectionLost(Sender: TObject; Component: TComponent; ConnLostCause: TConnLostCause;  var RetryMode: TRetryMode);
begin
     RetryMode :=  rmReconnectExecute;
end;

(por si alguien conoce el componente - ya puse la propiedad LocalFailOver en True -)
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
Manejo de errores con SQLite FGarcia Tablas planas 0 26-05-2014 19:39:32
Manejo De Errores En Bases De Datos FelipeDiaz Conexión con bases de datos 7 14-12-2007 22:47:05
manejo de errores douglas OOP 2 28-09-2007 12:54:32
Manejo de errores en Master Detail Carlos Hurtado Firebird e Interbase 2 03-11-2005 13:23:41
Manejo de errores en un procedimiento JavierO Varios 4 24-08-2005 20:40:28


La franja horaria es GMT +2. Ahora son las 00:57:15.


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