Pequeñas fallas con la clase TReport
Posted: Sat Jan 19, 2008 12:37 am
Saludos de nuevo colegas del foro:
Tengo una duda:
Tengo un dialogo con un listado en un TWBrowse, resulta que al generar los reportes previos con la Clase TReport en ocaciones, al momento de generar las paginas muestra el siguiente mensaje de error:
Error DBCMD/2001 Area de trabajo no usada: DBSKIP
Llamadas al Stack:
___________________________________________________
Llamado desde DBSKIP(0)
Llamado desde TREPORT:SKIP(1402)
Llamado desde TREPORT:PLAY(922)
Llamado desde (b)TREPORT:ACTIVATE(852)
Llamado desde (b)TDIALOG:TDIALOG(85)
Llamado desde TDIALOG:DISPLAY(0)
Llamado desde TDIALOG:HANDLEEVENT(903)
Llamado desde DIALOGBOX(0)
Llamado desde TDIALOG:ACTIVATE(270)
Llamado desde TREPORT:ACTIVATE(854)
Llamado desde IMPRIME(225)
Llamado desde (b)PRINLIST(83)
El Còdigo fuente original esta asì:
//-------------------------------------------//
METHOD SKIP( n ) CLASS TReport
STATIC lRunning := .f.
::nCounter++
IF ::bChange != nil .and. !lRunning
lRunning := .t.
EVAL( ::bChange, Self )
lRunning := .f.
ENDIF
IF ::bSkip != nil
RETURN EVAL( ::bSkip, n )
ENDIF
RETURN DBSKIP( n ) <-Aki tira el Fallo
Hize una paqueña modificacion esperando que el fallo desapareciera, pero no lo logre y quedo de la siguiente manera:
//-------------------------------------------//
METHOD SKIP( n ) CLASS TReport
STATIC lRunning := .F.
LOCAL cAliRep:= ""
::nCounter++
IF ::bChange != nil .and. !lRunning
lRunning := .T.
EVAL(::bChange, Self)
cAliRep:= ALIAS()
SysRefresh()
lRunning := .T.
ENDIF
IF ::bSkip != nil
cAliRep:= ALIAS()
RETURN EVAL( ::bSkip, n )
SysRefresh()
ENDIF
RETURN ((cAliRep)->(DBSKIP(n)))
Lo raro es que a veces funciona bien y muestra los reportes y en ocaciones casca con este fallo, alguien sabra porque se genera y como solucionarlo...
Gracias de antemano..
Tengo una duda:
Tengo un dialogo con un listado en un TWBrowse, resulta que al generar los reportes previos con la Clase TReport en ocaciones, al momento de generar las paginas muestra el siguiente mensaje de error:
Error DBCMD/2001 Area de trabajo no usada: DBSKIP
Llamadas al Stack:
___________________________________________________
Llamado desde DBSKIP(0)
Llamado desde TREPORT:SKIP(1402)
Llamado desde TREPORT:PLAY(922)
Llamado desde (b)TREPORT:ACTIVATE(852)
Llamado desde (b)TDIALOG:TDIALOG(85)
Llamado desde TDIALOG:DISPLAY(0)
Llamado desde TDIALOG:HANDLEEVENT(903)
Llamado desde DIALOGBOX(0)
Llamado desde TDIALOG:ACTIVATE(270)
Llamado desde TREPORT:ACTIVATE(854)
Llamado desde IMPRIME(225)
Llamado desde (b)PRINLIST(83)
El Còdigo fuente original esta asì:
//-------------------------------------------//
METHOD SKIP( n ) CLASS TReport
STATIC lRunning := .f.
::nCounter++
IF ::bChange != nil .and. !lRunning
lRunning := .t.
EVAL( ::bChange, Self )
lRunning := .f.
ENDIF
IF ::bSkip != nil
RETURN EVAL( ::bSkip, n )
ENDIF
RETURN DBSKIP( n ) <-Aki tira el Fallo
Hize una paqueña modificacion esperando que el fallo desapareciera, pero no lo logre y quedo de la siguiente manera:
//-------------------------------------------//
METHOD SKIP( n ) CLASS TReport
STATIC lRunning := .F.
LOCAL cAliRep:= ""
::nCounter++
IF ::bChange != nil .and. !lRunning
lRunning := .T.
EVAL(::bChange, Self)
cAliRep:= ALIAS()
SysRefresh()
lRunning := .T.
ENDIF
IF ::bSkip != nil
cAliRep:= ALIAS()
RETURN EVAL( ::bSkip, n )
SysRefresh()
ENDIF
RETURN ((cAliRep)->(DBSKIP(n)))
Lo raro es que a veces funciona bien y muestra los reportes y en ocaciones casca con este fallo, alguien sabra porque se genera y como solucionarlo...
Gracias de antemano..