In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

error en report

Foro de Xailer profesional en español
Responder
Francisco Sanchez
Mensajes: 532
Registrado: Mié Feb 09, 2005 6:20 pm

error en report

Mensaje por Francisco Sanchez »

Enlace el modulo obj que pusiste en el foro pero este listado no hay manera
de que funcione da error en rptline:adjust(1161) en el modulo report. He
reducido el codigo a mostrar al maximo, como veras es un ejemplo simple
simple con solo 2 font, si le quito las font funciona perfectamente
PROCEDURE Build_REPORT( lPreview, lSetup ) CLASS TContactos
LOCAL nRec := ( ::cAliasTEMP )->( Recno() )
LOCAL oReport, oGroup, oRptCol
LOCAL aFont := ARRAY(2), n := 1
LOCAL aHeader := { "CONTACTOS" }
LOCAL cEmp := "EMPRESA DE PRUEBAS"
DEFAULT lPreview TO .F.
DEFAULT lSetup TO .F.
( ::cAliasTEMP )->( DBGotop() )
If lSetup == .T.
Printer:Setup()
Endif
aFont[1] := TFont():New()
aFont[2] := TFont():New()
WITH OBJECT aFont[1]
:cName := "Arial"
:nSize := 12
:lBold := .T.
END WITH
WITH OBJECT aFont[2]
:cName := "Arial"
:nSize := 10
END WITH
DbSelectarea( ( ::cAliasTEMP ) )
REPORT oReport TITLE Trad_Id( "Fecha", NIDIOMA ) + " : " + Dtoc( Date() )
, ;
Trad_id( "Empresa", NIDIOMA ) + "
: " + Alltrim( cEmp ) ALIGN taLEFT ;
HEADER ( aHeader[1] ), ;
" " ALIGN taCENTER ;
FOOTER Trad_id( "Página", NIDIOMA ) + " : " + lTrim( Str(
oReport:nPage, 3 ) ) ALIGN taCENTER ;
JOBNAME Upper( Trad_id( "Contactos", NIDIOMA ) ) ;
FONT aFont[1], aFont[2] ;
PREVIEW
COLUMN TITLE Trad_id( "Apellidos", NIDIOMA ),;
Trad_id( "Nombre", NIDIOMA ) ;
DATA ( ::cAliasTEMP )->apellidos, ;
( ::cAliasTEMP )->nombre ;
PICTURE "@!X" ;
FONT 2 ;
OF oReport
oReport:oHeader:aFonts[1] := { || 1 }
FOR n := 1 TO 1
oReport:oHeader:aFonts[n] := { || 2 }
NEXT
FOR n := 1 TO 2
oReport:oTitle:aFonts[n] := { || 2 }
NEXT
oReport:nTitleUpLine := rlSINGLE
oReport:nTitleDnLine := rlSINGLE
RUN REPORT oReport WHILE !( ::cAliasTEMP )->( Eof() )
FOR n := 1 TO 2
aFont[n]:Destroy()
NEXT
( ::cAliasTEMP )->( DBGoto( nRec ) )
RETURN
//--//
Atentamente : Francisco Sánchez GERENTE GRUPO ST - Software TOTAL -
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

error en report

Mensaje por ignacio »

Francisco,
Creo que tu problema está en las siguientes lineas de código:
oReport:oHeader:aFonts[n] := { || 2 }
Debería ser:
oReport:oHeader:aFonts[n] := 2
Es decir el array aFonts de los RptLine ya no es un code-block, sino un
número. Por eso vamos mucho más rápido ;-)
No obstante la funcionalidad que se conseguía con el codeblock esta resuelta
con el siguiente evento:
TRptLine:OnPrintLine( nFor, @cText, @nFont, @nColor )
Como ves nFor te indica la linea del objeto TRptLine y el texto a imprimir,
el número de font a usar y el color a utilizar que se pasa por referencia lo
que te permite cambiarlo SOLO para dicha ocasión consiguiendo la misma
funcionalidad que el codeblock pero mucho más rápido y claro.
Mira el resto de eventos de la clase TRptColumn:
EVENT OnPrintData( oSender, nLine, cText, nFont, nColor ) // cText, nFont
and nColor byRef
EVENT OnPrintTitle( oSender, nLine, cText, nFont, nColor ) // cText, nFont
and nColor byRef
EVENT OnPrintTotal( oSender, cText, nFont, nColor ) // cText, nFont
and nColor byRef
Un saludo,
"Francisco Sanchez" <francisco@softwaretotal.biz> escribió en el mensaje
news:4229947b$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Enlace el modulo obj que pusiste en el foro pero este listado no hay
> manera de que funcione da error en rptline:adjust(1161) en el modulo
> report. He reducido el codigo a mostrar al maximo, como veras es un
> ejemplo simple simple con solo 2 font, si le quito las font funciona
> perfectamente
>
>
>
> PROCEDURE Build_REPORT( lPreview, lSetup ) CLASS TContactos
>
>
>
> LOCAL nRec := ( ::cAliasTEMP )->( Recno() )
>
> LOCAL oReport, oGroup, oRptCol
>
> LOCAL aFont := ARRAY(2), n := 1
>
> LOCAL aHeader := { "CONTACTOS" }
>
> LOCAL cEmp := "EMPRESA DE PRUEBAS"
>
>
>
> DEFAULT lPreview TO .F.
>
> DEFAULT lSetup TO .F.
>
>
>
> ( ::cAliasTEMP )->( DBGotop() )
>
>
>
> If lSetup == .T.
>
> Printer:Setup()
>
> Endif
>
>
>
> aFont[1] := TFont():New()
>
> aFont[2] := TFont():New()
>
> WITH OBJECT aFont[1]
>
> :cName := "Arial"
>
> :nSize := 12
>
> :lBold := .T.
>
> END WITH
>
>
>
> WITH OBJECT aFont[2]
>
> :cName := "Arial"
>
> :nSize := 10
>
> END WITH
>
>
>
> DbSelectarea( ( ::cAliasTEMP ) )
>
>
>
> REPORT oReport TITLE Trad_Id( "Fecha", NIDIOMA ) + " : " + Dtoc( Date() )
> , ;
>
> Trad_id( "Empresa", NIDIOMA ) + "
> : " + Alltrim( cEmp ) ALIGN taLEFT ;
>
> HEADER ( aHeader[1] ), ;
>
> " " ALIGN taCENTER ;
>
> FOOTER Trad_id( "Página", NIDIOMA ) + " : " + lTrim(
> Str( oReport:nPage, 3 ) ) ALIGN taCENTER ;
>
> JOBNAME Upper( Trad_id( "Contactos", NIDIOMA ) ) ;
>
> FONT aFont[1], aFont[2] ;
>
> PREVIEW
>
>
>
>
> COLUMN TITLE Trad_id( "Apellidos", NIDIOMA ),;
>
> Trad_id( "Nombre", NIDIOMA ) ;
>
> DATA ( ::cAliasTEMP )->apellidos, ;
>
> ( ::cAliasTEMP )->nombre ;
>
> PICTURE "@!X" ;
>
> FONT 2 ;
>
> OF oReport
>
>
>
> oReport:oHeader:aFonts[1] := { || 1 }
>
> FOR n := 1 TO 1
>
> oReport:oHeader:aFonts[n] := { || 2 }
>
> NEXT
>
> FOR n := 1 TO 2
>
> oReport:oTitle:aFonts[n] := { || 2 }
>
> NEXT
>
>
>
> oReport:nTitleUpLine := rlSINGLE
>
> oReport:nTitleDnLine := rlSINGLE
>
>
>
>
> RUN REPORT oReport WHILE !( ::cAliasTEMP )->( Eof() )
>
>
>
> FOR n := 1 TO 2
>
> aFont[n]:Destroy()
>
> NEXT
>
>
>
> ( ::cAliasTEMP )->( DBGoto( nRec ) )
>
>
>
> RETURN
>
> //--//
>
>
>
>
>
> Atentamente : Francisco Sánchez GERENTE GRUPO ST - Software TOTAL -
>
>
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Francisco Sanchez
Mensajes: 532
Registrado: Mié Feb 09, 2005 6:20 pm

error en report

Mensaje por Francisco Sanchez »

Funcionando al 100% muchisimas gracias ya sabia que el error lo estaba
cometiendo yo. NO recordaba que efectivamente lo explicaste en el curso que
ya no se utilizan los codeblocks y por eso va mas rapido. Disculpa mi poca
memoria.
Atentamente : Francisco Sanchez GERENTE GRUPO ST - Software TOTAL -
Responder