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 -
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.
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
-
- Mensajes: 532
- Registrado: Mié Feb 09, 2005 6:20 pm
- ignacio
- Site Admin
- Mensajes: 9253
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
error en report
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 -
>
>
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 -
>
>
-
- Mensajes: 532
- Registrado: Mié Feb 09, 2005 6:20 pm
error en report
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 -
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 -