Página 1 de 1

error en report

Publicado: Sab Mar 05, 2005 12:13 pm
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 -

error en report

Publicado: Sab Mar 05, 2005 4:46 pm
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 -
>
>

error en report

Publicado: Sab Mar 05, 2005 8:44 pm
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 -