Buen día,
Estoy desarrollando un sistema que se conecta por LAN a una base de datos Server SQL 2014. Mientras haya acceso a la red, funciona perfecto, el problema esta cuando alguna vez se pierde la conexión. Para ello escribí la siguiente función, la cual al tercer intento que no se conecta, pregunta si sigue intentando o aborta la conexión y cierra el sistema.
Código Delphi
[-]function Tform1.CONECTAR;
VAR
I:INTEGER;
begin
I:=1;
PANEL_INTENTOS.Show; PANEL_INTENTOS.Repaint;
RESULT:=TRUE;
WHILE (CONEXION_A_BASE.Connected = FALSE) AND ( I < 4 ) DO begin
try
CONEXION_A_BASE.Open;
RESULT:=TRUE;
BREAK;
EXCEPT
ON E:EXCEPTION DO BEGIN
INC(I);
if (I > 3) and (MESSAGEDLG('NO PUEDO CONECTARME AL SERVIDOR, VERIFIQUE LA CONEXION.' + CHR(13) +
'¿ VUELVO A INTENTAR ?',MTERROR,[MBYES,MBNO],0,MBYES) = MRYES) THEN I:=1;
INTENTOS.Caption:=INTTOSTR(I);
INTENTOS.Repaint;
RESULT:=FALSE;
END;
end;
end;
PANEL_INTENTOS.Hide;
end;
El problema radica en que, si la persona se obsesiona con intentar conectar cuando no hay conexion (Yo lo simulo habilitando/deshabilitando la LAN), el sistema se ralentiza. Al ejecutar el debuger, veo que cuando muestra en pantalla el mensaje de seguir intentando o no, aparece constantemente el error de conexión, es como si siguiera intentado conectar indefinidamente, el mensaje es el siguiente:
Project Facturar.exe raised exception class EOleException with message '[DBNETLIB][ConnectionOpen
(Connect()),]No existe el servidor SQL Server o se ha denegado el acceso al mismo'.
Si dejo sin comentarios la linea "CONEXION_A_BASE.Close" el sistema se ralentiza aun mas. si pongo un CONEXION_A_BASE.destroy da error de modulo.
He buscado por todos lados y no hallé la solución de como hacer para que deje de intentar conectarse, espero alquien pueda darme una mano.
Desde ya muchas gracias