Recuperar error de un alias cerrado

Post Reply
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Recuperar error de un alias cerrado

Post by AngelSalom »

Hola amigos, estoy tratando de resolver un tema que no sé si tiene solución.
En alguna parte del programa y realizando ciertas combinaciones tengo usuarios que consiguen generar un error al cerrar una tabla en pleno proceso, error que no he conseguido reproducir por lo que entiendo que se deberá a características de los equipos en los que estén instalados (antivirus, cortes de red, etc.)

La pregunta es si es posible "recuperar" la aplicación tras un error de este tipo, como por ejemplo en el que genero en este código cerrando la tabla en medio de un bucle

Code: Select all

#include "fivewin.ch"

Function Main()
Local nTot:=0

  Use Customer
  while !Customer->(eof())
    nTot++
    Customer->(DbSkip())

    If nTot=5
      Close Customer
    Endif
  Enddo

  ? nTot

Return (nil)  
Gracias!
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: Recuperar error de un alias cerrado

Post by hmpaquito »

Hola Ángel,

Intuyo que el problema está en tu programa y no en los equipos.
También creo que el error es debido a que cuando el programa está en un bucle, el usuario hace algo con el ratón, con el teclado, etc... que desvía la ejecución a otra parte del programa. Allí se cierran tablas, incluida la que comentas y de vuelta al bucle sobreviene el crash.

¿ Qué hacer ? Por supuesto, no parchear, buscando soluciones de recuperacion de la aplicacion tras el error, sino ir a la raiz del problema. Y ahi la solucion puede pasar porque en un bucle inhabilites el uso de las ventanas de detrás. Yo tengo algo asi haciendo que los browses no se pinten (evento paint) si una variable publica se esta ejecutando. Se me muestra la pantalla del browse en blanco, pero me ahorro problemas de reposiconamiento y otros.

Espero que te sirva.

Salu2
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Recuperar error de un alias cerrado

Post by karinha »

Intenta asi:

Code: Select all

#include "fivewin.ch"

FUNCTION MAIN()

   LOCAL NTOT := 0

   USE CUSTOMER
   GO TOP

   WHILE .NOT. CUSTOMER->( EOF() )

      SYSREFRESH()

      NTOT++

      CUSTOMER->( DBSKIP() )

      IF NTOT == 5

         EXIT

      ENDIF

   ENDDO

   ? NTOT

   IF NTOT = 5

      CLOSE CUSTOMER

      NTOT := 0

   ENDIF

RETURN NIL
 
João Santos - São Paulo - Brasil
xmanuel
Posts: 613
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla
Contact:

Re: Recuperar error de un alias cerrado

Post by xmanuel »

Code: Select all

#include "fivewin.ch"

Function Main()
Local nTot:=0
local cAlias  // <----

  Use Customer

  cAlias := alias()  // <----

  while select( cAlias ) != 0 .and. !Customer->(eof())  // <----
    nTot++
    Customer->(DbSkip())

    If nTot=5
      Close Customer
    Endif
  Enddo

  ? nTot

Return (nil)  
 
______________________________________________________________________________
Sevilla - Andalucía
Post Reply