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;