Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Reconexion con componente MyDAC si la conexion se pierde (https://www.clubdelphi.com/foros/showthread.php?t=96873)

navbuoy 04-10-2024 13:07:53

Reconexion con componente MyDAC si la conexion se pierde
 
Bueno esto es un tema basico pero lo pongo por si alguien lo desconoce

si por lo que sea la conexion se "pierde" durante la ejecucion, tenemos el evento OnConnectionLost que
podemos configurar asi ... si tenemos por ejemplo el componente TMyConnection1 editamos su evento mencionado

Código:

void __fastcall TForm1::MyConnection1ConnectionLost(TObject *Sender, TComponent *Component,
          TConnLostCause ConnLostCause, TRetryMode &RetryMode)
{
    ShowMessage("Conexión perdida. Intentando reconectar...");
    int maxIntentos = 5; // Máximo número de intentos de reconexión
    int intentos = 0;

    while (intentos < maxIntentos)
    {
        try
        {
                        Form1->MyConnection1->Connect(); // Intentar reconectar
            if (MyConnection1->Connected)
                        {
                                // Reconectamos tablas etc...

                                Form1->MyTable2->Active = true; 
                                Form1->MyTable3->Active = true; 
                                Form1->MyTable4->Active = true; 
                                Form1->MyTable5->Active = true;


                                Form1->MyTable2->Refresh();
                                Form1->MyTable3->Refresh();
                                Form1->MyTable4->Refresh();
                                Form1->MyTable5->Refresh();

                                ShowMessage("Reconectado exitosamente.");
                                // Reconexión exitosa

                                return;
            }
        }
        catch (Exception &E)
        {
                        //ShowMessage("Intento de reconexión fallido: " + E.Message);
                }

                Sleep(2000); // Esperar 2 segundos antes de intentar nuevamente
                intentos++;
        }

        ShowMessage("No se pudo reconectar después de " + IntToStr(maxIntentos) + " intentos.");
}
//---------------------------------------------------------------------------


navbuoy 05-10-2024 11:23:04

una duda que tengo es si Sleep() hay que ponerle 2 o 2000 (para 2 segundos)


La franja horaria es GMT +2. Ahora son las 06:20:58.

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