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.");
}
//---------------------------------------------------------------------------