# TOTAL DE PAGINAS

HMG en Español

Moderator: Rathinagiri

LOUIS
Posts: 138
Joined: Tue Dec 11, 2012 9:05 pm

# TOTAL DE PAGINAS

Post by LOUIS » Thu Oct 02, 2014 10:45 pm

Hola Amigos:

Estuve revisando los Reports que vienen en la carpeta Samples, y noté algo:
Todos tienen el contador de página "Str(_PAGENO)" , es decir, cada página va numerándose
1 ... 2 ... 3 ... etc

Pero no ví cómo mostrar cada página con su contador total de páginas, es decir:
Page 1/3 ... Page 2/3 ... Page 3/3 (dentro de la página que se imprimirá)

Con qué variable obtengo el número total de páginas ? En este ejemplo es el 3 que va debajo como denominador común.

Hay un marco que muestra la vista previa de la página, y en este marco sí esta como 1/3, 2/3, 3/3
Es decir la variable sí está por ahí ... podeis ayudarme ?

Gracias por sus respuestas.

User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil
Has thanked: 100 times
Been thanked: 179 times

Post by Pablo César » Fri Oct 03, 2014 1:23 am

Hola Louis,

Si quieres agregar total de páginas en EXPRESSION de tu DEFINE REPORT (FOOTER), debes agregar:
Screen_01.PNG
Screen_01.PNG (49.62 KiB) Viewed 1411 times
Por ejemplo del C:\hmg.3.3.1\SAMPLES\Controls\ReportAdvanced\REPORT_ADVANCED_1\demo.prg

Después debes alterar el archivo C:\hmg.3.3.1\INCLUDE\i_rptgen.ch, agregandole:
Screen_02.PNG
Screen_02.PNG (49.93 KiB) Viewed 1411 times
No precisa reconstruir la biblioteca del HMG.
Solo recompilar el ejemplo y listo !
Screen_03.PNG
Screen_03.PNG (32.55 KiB) Viewed 1410 times
Source code sample (C:\hmg.3.3.1\SAMPLES\Controls\ReportAdvanced\REPORT_ADVANCED_1\demo.prg)

Code: Select all

#include "hmg.ch"

Function Main
	Set Date Ansi
	Set Century On
	
	Use Test

	DEFINE WINDOW Win_1 ;
		ROW 0 ;
		COL 0 ;
		WIDTH 400 ;
		HEIGHT 400 ;
		TITLE 'Hello Report' ;
		WINDOWTYPE MAIN ;
		ONINIT CreateReport()

		DEFINE MAIN MENU
			POPUP 'File'
				ITEM 'Execute Report'	ACTION ExecuteReport('Report1',.t.,.t. )
			END POPUP
		END MENU

	END WINDOW

	Win_1.Center

	Win_1.Activate

Return

Function CreateReport

	DEFINE REPORT Report1

		* Report Layout ***********************************************

		BEGIN LAYOUT 
			PAPERSIZE	PRINTER_PAPER_A4
			ORIENTATION	PRINTER_ORIENT_PORTRAIT 
		END LAYOUT

		* Header Band *************************************************

		BEGIN HEADER

			BANDHEIGHT	25

			BEGIN LINE
				FROMROW		23
				FROMCOL		10
				TOROW		23
				TOCOL		200
				PENWIDTH	0.1
				PENCOLOR	{ 0 , 0 , 0 }
			END LINE

			BEGIN TEXT
				EXPRESSION	'Report Header'
				ROW		13	
				COL		10	
				WIDTH		100	
				HEIGHT		10	
				FONTNAME	'Helvetica'
				FONTSIZE	20	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left
			END TEXT

			BEGIN PICTURE
				VALUE		'hmg.jpg'
				ROW		10	
				COL		189	
				WIDTH		11	
				HEIGHT		11	
				STRETCH		.F.
			END PICTURE

		END HEADER

		* Detail Band *************************************************

		BEGIN DETAIL

			BANDHEIGHT	6

			BEGIN TEXT
				EXPRESSION	Test->Code
				ROW		2	
				COL		18	
				WIDTH		10	
				HEIGHT		10	
				FONTNAME	'Helvetica'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->First
				ROW		2	
				COL		30	
				WIDTH		60
				HEIGHT		10	
				FONTNAME	'Helvetica'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->Last
				ROW		2	
				COL		70	
				WIDTH		60	
				HEIGHT		10	
				FONTNAME	'Helvetica'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->Country
				ROW		2	
				COL		110	
				WIDTH		60	
				HEIGHT		10	
				FONTNAME	'Helvetica'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->Province
				ROW		2	
				COL		140	
				WIDTH		60	
				HEIGHT		10	
				FONTNAME	'Helvetica'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->Birth
				ROW		2	
				COL		175	
				WIDTH		60	
				HEIGHT		10	
				FONTNAME	'Helvetica'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

		END DETAIL

		* Footer Band *************************************************

		BEGIN FOOTER

			BANDHEIGHT	27

			BEGIN LINE
				FROMROW		4
				FROMCOL		10	
				TOROW		4	
				TOCOL		200	
				PENWIDTH	0.1	
				PENCOLOR	{ 0 , 0 , 0 }	
			END LINE

			BEGIN TEXT
				EXPRESSION	'Page. No: ' + AllTrim(Str(_PageNo)) + "/" + AllTrim(Str(_PageTot))
				ROW		7	
				COL		11	
				WIDTH		100	
				HEIGHT		10	
				FONTNAME	'Helvetica'
				FONTSIZE	12	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Date()
				ROW		7	
				COL		177	
				WIDTH		30	
				HEIGHT		10	
				FONTNAME	'Helvetica'
				FONTSIZE	12	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

		END FOOTER

		* Summary Band ************************************************

		BEGIN SUMMARY

			BANDHEIGHT	50

			BEGIN TEXT
				EXPRESSION	'Total Records: ' + Str(RecCount()) 
				ROW		10
				COL		20	
				WIDTH		100	
				HEIGHT		30
				FONTNAME	'Helvetica'
				FONTSIZE	12	
				FONTBOLD	.T.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

		END SUMMARY

	END REPORT

Return
i_rptgen.rar
Uncompress this file in INCLUDE subfolder of your HMG
(1.98 KiB) Downloaded 85 times
Saludos

At HMG Development Team:

                        Could you evaluate whether this constant _PageTot can become part of the permanent in HMG ?

This seems usuable for anyone. :D
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil
Has thanked: 100 times
Been thanked: 179 times

Post by Pablo César » Fri Oct 03, 2014 1:44 am

Para los casos de utilizar HMG_HPDF, existen las funciones:

HMG_HPDF_PageNo()
HMG_HPDF_PageCount()

Que pueden ser utilizadas gracias al vector _HMG_SYSDATA[ 150 ] que tiene HMG_HPDF.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

LOUIS
Posts: 138
Joined: Tue Dec 11, 2012 9:05 pm

Post by LOUIS » Fri Oct 03, 2014 2:59 am

Gracias Pablo, siempre tan gentil, sos Genial !

+1

:mrgreen:

User avatar
srvet_claudio
Posts: 2030
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Has thanked: 34 times
Been thanked: 143 times
Contact:

Post by srvet_claudio » Fri Oct 03, 2014 3:42 pm

Pablo César wrote:Could you evaluate whether this constant _PageTot can become part of the permanent in HMG ?
Done!

Code: Select all

#xtranslate _PageCount => HMG_LEN (_HMG_SYSDATA \[ 160 \]) 
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com

Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México
Has thanked: 1 time
Been thanked: 2 times

Post by Javier Tovar » Fri Oct 03, 2014 3:58 pm

Si que hace falta! yo siempre lo hacia a mano!

Y gracias por las contribuciones.

Saludos

User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil
Has thanked: 100 times
Been thanked: 179 times

Post by Pablo César » Fri Oct 03, 2014 4:17 pm

Thank you Claudio ! :D
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

LOUIS
Posts: 138
Joined: Tue Dec 11, 2012 9:05 pm

Post by LOUIS » Sat Oct 11, 2014 3:27 am

Master Pablo:

However ...
Cuando el Report va definido en el prg, funciona muy bien este punto que hemos tratado aquì con (i_rptgen.ch), pero cuando el RPT es Externo, (me topé con este ejemplo que me parece muy bueno, ya que no hay que recompilar el código del prg, sino sólo se modifica este archivo externo y con el exe se ven los cambios inmediatamente), no sé cómo poner los pies de página con _pageno/_pageTot ni tampoco sé cómo ponerle los quiebres por grupos :oops:

Este es el código del RPT Externo:

Code: Select all

DEFINE REPORT TEMPLATE
	TITLE wempresa + '|INFORME DE CAJA' 
	HEADERS {'',' ',' ',' '} ,  {'USUARIO','TIEMPO','FECHA','VALOR'} 
	FIELDS {'usuario','tiempo','fecha','valor'} 
	WIDTHS {15,15,15,14} 
	TOTALS {.F.,.F.,.F.,.T.} 
	NFORMATS { , , ,'999,999,999.99'} 
	WORKAREA mtiempo 
	LPP 50 
	CPL 80 
	LMARGIN 4
	PREVIEW  
	SELECT  
	IMAGE {'rosa.jpg',1,75,6,80 }
	GROUPED BY 'USUARIO' 
	HEADRGRP 'Usuario:' 
END REPORT
A pesar de que allí dice GROUPED BY 'USUARIO' y HEADRGRP 'Usuario:' , en realidad no hace el quiebre que se espera :cry:
En la imagen adjunta, se aprecia el quiebre cuando después de Argentina llega Brazil (este Reporte es definido dentro del prg)
de la siguiente manera:

Code: Select all

Function CreateReport

	DEFINE REPORT Report1

		* Report Layout ***********************************************

		BEGIN LAYOUT 
			PAPERSIZE	PRINTER_PAPER_A4
			ORIENTATION	PRINTER_ORIENT_PORTRAIT 
		END LAYOUT

		* Header Band *************************************************

		BEGIN HEADER

			BANDHEIGHT	25

			BEGIN LINE
				FROMROW		23
				FROMCOL		10
				TOROW		23
				TOCOL		200
				PENWIDTH	0.1
				PENCOLOR	{ 0 , 0 , 0 }
			END LINE

			BEGIN TEXT
				EXPRESSION	'Report Header'
				ROW		13	
				COL		10	
				WIDTH		100	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	20	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN PICTURE
				VALUE		'hmg.jpg'
				ROW		10	
				COL		189	
				WIDTH		11	
				HEIGHT		11	
				STRETCH		.F.
			END PICTURE

		END HEADER

		* Detail Band *************************************************

		BEGIN DETAIL

			BANDHEIGHT	6

			BEGIN TEXT
				EXPRESSION	Test->Code
				ROW		2	
				COL		18	
				WIDTH		10	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->First
				ROW		2	
				COL		30	
				WIDTH		60
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->Last
				ROW		2	
				COL		70	
				WIDTH		60	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->Country
				ROW		2	
				COL		110	
				WIDTH		60	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->Province
				ROW		2	
				COL		140	
				WIDTH		60	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Test->Birth
				ROW		2	
				COL		175	
				WIDTH		60	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	9	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

		END DETAIL

		* Footer Band *************************************************

		BEGIN FOOTER

			BANDHEIGHT	27

			BEGIN LINE
				FROMROW		4
				FROMCOL		10	
				TOROW		4	
				TOCOL		200	
				PENWIDTH	0.1	
				PENCOLOR	{ 0 , 0 , 0 }	
			END LINE

			BEGIN TEXT
				EXPRESSION	'Page. No:' + Str(_PageNo) + '/' + ALLTRIM(Str(_PageNo))
				ROW		7	
				COL		11	
				WIDTH		100	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	12	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

			BEGIN TEXT
				EXPRESSION	Date()
				ROW		7	
				COL		177	
				WIDTH		30	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	12	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

		END FOOTER

		* Summary Band ************************************************

		BEGIN SUMMARY

			BANDHEIGHT	50

			BEGIN TEXT
				EXPRESSION	'Total Records: ' + Str(RecCount()) + chr(13) + 'Total Pages: '  + Str(_PAGENO) 
				ROW		10
				COL		20	
				WIDTH		100	
				HEIGHT		30
				FONTNAME	'Arial'
				FONTSIZE	12	
				FONTBOLD	.T.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 
			END TEXT

		END SUMMARY

		* Group Definition *********************************************

		BEGIN GROUP

			GROUPEXPRESSION	Test->Country

			BEGIN GROUPHEADER

				BANDHEIGHT	15

				BEGIN TEXT
					EXPRESSION	Test->Country
					ROW		5
					COL		20	
					WIDTH		100	
					HEIGHT		30
					FONTNAME	'Arial'
					FONTSIZE	14	
					FONTBOLD	.T.
				END TEXT

			END GROUPHEADER

			BEGIN GROUPFOOTER

				BANDHEIGHT	15

				BEGIN LINE
					FROMROW		8
					FROMCOL		50	
					TOROW		8	
					TOCOL		160	
					PENWIDTH	0.1	
					PENCOLOR	{ 0 , 0 , 0 }	
				END LINE

			END GROUPFOOTER

		END GROUP

	END REPORT

Return
Cómo hacer que lo mismo que se programa dentro de la Function CreateReport dentro del PRG ... pueda funcionar y aparecer en el RPT Externo (DEFINE REPORT TEMPLATE) ?

Espero no molestar con estas inquietudes.
Muy agradecido anticipadamente.
Attachments
CON QUIEBRE.jpg
CON QUIEBRE.jpg (189.54 KiB) Viewed 1270 times

LOUIS
Posts: 138
Joined: Tue Dec 11, 2012 9:05 pm

Post by LOUIS » Sat Oct 11, 2014 3:35 am

Adjunto la imagen del RPT Externo ... Sin quiebres ni Pie de página ... hacia abajo después del Total todo es blanco, no hay nada más.

Deberían haber 7 quiebres o GRUPOS por número de usuario.

Saludos.
Attachments
SIN QUIEBRE.jpg
SIN QUIEBRE.jpg (179.98 KiB) Viewed 1243 times

User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil
Has thanked: 100 times
Been thanked: 179 times

Post by Pablo César » Sat Oct 11, 2014 1:34 pm

Hola Louis,

Gracias por tu preocupacion a respecto y estimular los reparos que como este es un BUG.

Me costó un poquito pero encontré dos problemas:

1. Faltaba el parámetro cHeader en una de las llamadas de

easyreport(ctitle,aheaders1,aheaders2,afields,awidths,atotals,nlpp,ldos,lpreview,cgraphic,nfi,nci,nff,ncf,lmul,cgrpby,chdrgrp,llandscape,ncpl,lselect,calias,nllmargin,aformats,npapersize,lnoprop)

Linea 102 de C:\hmg.3.3.1\SOURCE\Report\H_REPORT.PRG

Tambien fueron alterado en:

METHOD extreport1(cfilerep)

Linea 190 de C:\hmg.3.3.1\SOURCE\Report\H_REPORT.PRG porque tambien faltava argumento cHeader


2. Agregué clean1( donde decia:

cgrpby:=repobject:leadato('REPORT','GROUPED BY','')

para

cgrpby:=clean1( repobject:leadato('REPORT','GROUPED BY','') )

Linea 674 de C:\hmg.3.3.1\SOURCE\Report\H_REPORT.PRG

Observacion: Puse Clean1 porque mismo esté presente el método clean, yo no consigo utilizarlo. Tratamiento de classes, no es mi fuerte. Talvez el Dr. Claudio pueda darnos una manito... Entonces creé otra funcion con igual procedimiento pero con nombre distinto. Esto tendria que ser arreglado.

Adjunto mi C:\hmg.3.3.1\SOURCE\Report\H_REPORT.PRG que debe ser substituído y ejecutado el C:\hmg.3.3.1\SOURCE\Report\buildlib.bat para re-crear la biblioteca libreport.a
H_REPORT.rar
C:\hmg.3.3.1\SOURCE\Report
(5.69 KiB) Downloaded 63 times
Y este es el resultado:
Screen.PNG
Screen.PNG (129.09 KiB) Viewed 1242 times
Este demo fué adicionado HEADING " - Agrupando" en la funcion testrepo() que no teníamos ejemplo prático. Seria bueno que sea substituído por el actual SAMPLES.

Code: Select all

#include 'hmg.ch'

function main()
       declare window form_1
       define window form_1 ;
		AT 0,0 ;
		WIDTH 400 ;
		HEIGHT 400 ;
		TITLE 'hola' ; 
         main

       @ 40,10 button b_2 caption 'Do External Report (.rpt)' action testrepo() WIDTH 150 

       end window
       activate window form_1
return

function testrepo()
       wempresa:='sistemas c.v.c'
       use mtiempo 
       index on usuario to lista
       go top
       DO REPORT FORM repdemo HEADING " - Agrupando"
	use
return
Espero que Claudio o Rathi nos ayude a arreglar el Clean1() para Clean() y modificar nuestra biblioteca de forma definitiva.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

Post Reply