Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Cuando falla la conexión (https://www.clubdelphi.com/foros/showthread.php?t=49630)

JLR 25-10-2007 19:04:42

Cuando falla la conexión
 
Hola gente.
Para evitar tener que reinstalar en todas las estaciones de trabajo, decidí simplemente que se ejecutarían directamente del servidor con la siguiente forma :

\\servidor\miprograma\miprograma.exe

Todo funciona Ok.
El problema es que quiero atrapar el error de fallo de conexión, es decir con el programa abierto me voy a un equipo de la red y le quito el cable.
Obtengo un par de errores uno del tipo "Unable to complete network resquest to host : xxx.xxx.xxx.xxx"
El problema es que cuando intento hacer cualquier cosa con el programa ya no obtengo otra cosa que no sea "Excepción external c0000006", y he leido que es por un problema de la red.
Si le pasa a algún cliente, sabemos que es problema de la red, pero quiero atrapar el error.
¿ Alguien ha hecho algo para que esto no pase ?
Salu2
JLR

Lonidas 26-10-2007 00:55:54

Hola, podrias usar el componente TApplicationEvent para capturar el mensaje de error y poner el mensaje que tu quieras...

JLR 29-10-2007 12:02:36

Gracias por contestar.
En realidad si puedo sacar el error, pero no puedo manejarlo. El error es tan grave que no se recupera.
Salu2

Lepe 29-10-2007 18:46:44

Hola JLR:

Más o menos deducía lo que ocurría, pero dado que no soy gurú en estos temas, he reproducido tu error y de hecho obtengo el EExternalException.

En el ApplicationsEvents:
Código Delphi [-]
  if e is EExternalException then
  begin
    s := TStringList.Create;
    s.Add('error grave');
    s.SaveToFile('c:\Miprograma\NetworkError\mio.txt'); // atención a la carpeta NetWorkError ;)
    FrmErrorGrave.ShowModal;
    Application.Terminate;
  end;

El Application.Terminate no ayudará mucho, porque el Sistema Operativo también lo hará por nosotros.

Si necesitas mostrar un mensaje en tu ordenador "Cliente", puedes crear una ventana informando al usuario de los sucesivos errores que va a dar el programa.

En el lado servidor, podrías tener un programa monitoreando la carpeta 'NetworkError' que permita informarte (mediante correo, un sonido, etc) del problema.


Saludos y Suerte!!

tefots 29-10-2007 21:33:59

y no seria mejor hacer un programita o una especie de acceso directo , que lo que haga sea copiar el programa del servidor a una carpeta local y luego ejecutarlo localmente en cada máquina ?.
bueno, lo ideal seria que dicho acceso directo o programita , se encargara de ver si el ejecutable del servidor es distinto (tamaño en bytes) y solo copiarlo en ese caso.
con esto te aseguras que todo el mundo lo tenga actualizado y todo el mundo lo ejecuta localmente y no por la red.

aun así , seguiras teniendo problema si el servidor o la red cae , pero será mas controlable por la aplicación.

saludos.

JLR 31-10-2007 10:04:26

Muy bueno Lepe.
Los grandes problemas tienen pequeñas soluciones.
Lo he metido del tirón en el código ( algo parecido ), pero no he tenido tiempo de probar. (Seguro que funciona).
Ya hablaremos
Salu2
JLR

JLR 31-10-2007 10:06:39

Efectivamente compañero.
Esa era una opción que la dejaba como última, ya que tengo casi 450 usuarios en múltiples instalaciones.
Imagino que por muy fácil que lo ponga siempre tendremos que dar explicaciones .
Salu2
JLR

Lepe 31-10-2007 12:03:42

No creo que haya problemas al explicar este fallo, siempre que se haga de forma entendible:

" a ver, tú estas comiendo un plato de sopa, y llego yo y te quito la cuchara, ¿puedes seguir comiendo sopa?"

Normalmente explicaciones de este tipo arrancan una sonrisa del interlocutor, después se explica claramente el problema: "aunque no estés haciendo nada el programa usa la red para mantener la conexión con la base de datos, que está en el servidor, si falla la red, no hay comunicación posible , etc, etc".

Saludos

Ivanzinho 31-10-2007 12:56:32

Cita:

Empezado por Lepe (Mensaje 242577)
No creo que haya problemas al explicar este fallo, siempre que se haga de forma entendible:

" a ver, tú estas comiendo un plato de sopa, y llego yo y te quito la cuchara, ¿puedes seguir comiendo sopa?"

Saludos

Mejor diles que les quitas el plato, que los usuarios te responden cualquier cosa. :D

Un saúdo.


La franja horaria es GMT +2. Ahora son las 20:11:59.

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