# TOTAL DE PAGINAS

HMG en Español

Moderator: Rathinagiri

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

# TOTAL DE PAGINAS

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

LOUIS wrote: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
Ahhh si me olvidé de aprender sobre esto. Pero ahora tengo que salir y te respondo más tarde Louis.

Solo para observar que nosotros hicimos para utilizar la variable _pageTot pero el Dr. Claudio la cambió para _PageCount. Digo esto porque apartir del próximo release creeria que será esta otra variable.
srvet_claudio wrote:Done!

Code: Select all

#xtranslate _PageCount => HMG_LEN (_HMG_SYSDATA \[ 160 \]) 
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

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

Post by LOUIS » Sat Oct 11, 2014 3:24 pm

Estimado Pablo:

Yo uso la vesión 3.0.46 , reemplacé el H_REPORT.PRG donde corresponde, pero no me salió
el reporte como a Tí :oops:

Pudieras agregar el código del REPDEMO.RPT externo del prg, para ver qué cambió ahí ?

Gracias.

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 8:07 pm

LOUIS wrote:Yo uso la vesión 3.0.46, reemplacé el H_REPORT.PRG
No sabia que seria para esta version en ANSI, fijate que el archivo debe estar en modo UTRF-8, cambialo por favor. Y tambien requiere que reconstruyas la LIB como indiqué con C:\hmg.3.0.46\SOURCE\Report\buildlib.bat
Pudieras agregar el código del REPDEMO.RPT externo del prg, para ver qué cambió ahí ?
Es el mismo que hay en el SAMPLES de HMG, es decir en C:\hmg.3.0.46\SAMPLES\REPORT.BASIC.2\demo.prg
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 » Sat Oct 11, 2014 8:28 pm

Con respecto a utilizar la variable _pageTot o _PageCount lamento informar que no es posible actualmente disponibilizarlo, sin antes hacer una alteración en la biblioteca de H_REPORT.

Sobre disponibilizar el número de página en el Pie de página (FOOTER) tampoco actualmente es posible como lo es en modo manual (sin ser externo mediante RPT). Solo posue aHEADERS1 e aHEADERS2 y no tiene aFOOTERS :(
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

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

Post by LOUIS » Tue Oct 14, 2014 10:40 pm

ESTIMADO PABLO:

Entonces me fui por el diseño de reporte procedural (dentro del prg), y me gustan el C:\hmg.3.0.46\SAMPLES\REPORT.ADVANCED.4
y el C:\hmg.3.0.46\SAMPLES\REPORT.ADVANCED.6

Analizando el REPORT.ADVANCED.4 , tengo 3 inquietudes tal y como se ve en el gráfico adjunto:
1) El recuadro muestra 1/6, pero en la hoja dice 1/3 ... en la 4 dice 4/3, luego 5/3 y 6/3
2) Cuando mando a grabar el reporte PDF, no me pide que le ponga nombre y lo graba con extensión EMF :shock:
3) A pesar de estar definido el grupo FOOTER, el detalle sobrepasa su límite e invade al FOOTER, dañando
así la presentación preliminar de la hoja y por ende su impresión :(

Cómo solucionar estos inconvenientes ? :roll:

Se agradece mucho tu amabilidad.
Attachments
REPORT ADV4.jpg
REPORT ADV4.jpg (180.32 KiB) Viewed 837 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 » Wed Oct 15, 2014 11:38 am

LOUIS wrote:Entonces me fui por el diseño de reporte procedural (dentro del prg), y me gustan el C:\hmg.3.0.46\SAMPLES\REPORT.ADVANCED.4
y el C:\hmg.3.0.46\SAMPLES\REPORT.ADVANCED.6

Analizando el REPORT.ADVANCED.4 , tengo 3 inquietudes tal y como se ve en el gráfico adjunto:
1) El recuadro muestra 1/6, pero en la hoja dice 1/3 ... en la 4 dice 4/3, luego 5/3 y 6/3

..//..

3) A pesar de estar definido el grupo FOOTER, el detalle sobrepasa su límite e invade al FOOTER, dañando
así la presentación preliminar de la hoja y por ende su impresión :(

Cómo solucionar estos inconvenientes ?
Hola Louis, no hay como verificar lo que ocurrre sin source code.
Hé compilado los ejemplos ADVANCED.4 y ADVANCED.6 del hmg.3.0.46\SAMPLES como mencionaste y ninguno me emite lo que presentaste en tu imagen.
LOUIS wrote:2) Cuando mando a grabar el reporte PDF, no me pide que le ponga nombre y lo graba con extensión EMF :shock:
Si claro. Esta opcion de "Save as" solo está presente apartir de la version hmg.3.2.1. Antes de esa version solo graba en EMF. Fijate los botones que no son los mismos que hay actualmente.

Louis, disculpame por mi insistencia. Pero en mi opinion, deberias estar trabajando con la ultima version de HMG. Desconozco tu razon, pero tengo impresion que puedes adaptar todos los mismos recursos para la version UNICODE.

Siempre será mejor trabajar en la ultima version, pues es la que está vigente, está siendo testeada, está siendo observada por todos. Ya que tiene mucho más recursos que las anteriores y no hay como trabajar encima de las versiones antiguas.

En mi sincero y humilde consejo, espero que todos trabajen con la ultima version. Asi poderemos todos contribuir y avanzar en mejorias.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

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

Post by LOUIS » Wed Oct 15, 2014 2:30 pm

Estimado Pablo:

El ejemplo de la imagen, es con datos reales, por eso las páginas llegan a 6 ... los ejemplos del sample, son cortos y
llegan máximo a 3 páginas.

De todos modos, así como ayudó la solución que diste, para ver el # total de páginas con el i_rptgen modificado,
si no es molestia, y crees que se puede hacer algo al respecto, sería fabuloso.

El codigo del prg es:

Code: Select all

#include "hmg.ch"

Function Main

PUBLIC EMP,IDUSER

   Set Century On
   Set Date BRIT
   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

SELE 1
USE MAESTRO
INDEX ON CUENTA TO COD1
SELE 2
USE TODOS
INDEX ON CUENTA TO COD2
INDEX ON FECHA TO COD3
SET INDEX TO COD2
SET RELA TO CUENTA INTO MAESTRO
IDUSER='L4ISALPHA'
EMP='MI EMPRESA C.A.'

	DEFINE REPORT Report1

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

		BEGIN LAYOUT 

			PAPERSIZE	PRINTER_PAPER_A4
			ORIENTATION	PRINTER_ORIENT_PORTRAIT 

		END LAYOUT

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

		BEGIN HEADER

			BANDHEIGHT	25

			BEGIN TEXT

				EXPRESSION	EMP + '.- Auxiliar Contable'
				ROW		13	
				COL		18	
				WIDTH		160	
				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		'HP.jpg'
				ROW		08	
				COL		166	
				WIDTH		14	
				HEIGHT		14	
				STRETCH		.F.

			END PICTURE

			BEGIN LINE

				FROMROW		23		&& FILA
				FROMCOL		10		&& COL
				TOROW		23		&& FILA
				TOCOL		200		&& COL
				PENWIDTH	0.1
				PENCOLOR	{ 0 , 0 , 0 }

			END LINE

		END HEADER

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

		BEGIN DETAIL

			BANDHEIGHT	6

			BEGIN TEXT

				EXPRESSION	TODOS->FECHA
				ROW		2
				COL		18	
				WIDTH		18	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	8	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 

			END TEXT

			BEGIN TEXT

				EXPRESSION	TODOS->DIARIO
				ROW		2
				COL		35	
				WIDTH		14
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	8	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 

			END TEXT

			BEGIN TEXT

				EXPRESSION	TODOS->XD
				ROW		2
				COL		46	
				WIDTH		5	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	8	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 

			END TEXT

			BEGIN TEXT

				EXPRESSION	TODOS->NUMEROA
				ROW		2
				COL		52	
				WIDTH		30	
				HEIGHT		22	
				FONTNAME	'Arial'
				FONTSIZE	8	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 

			END TEXT

			BEGIN TEXT

				EXPRESSION	TODOS->NUMEROB
				ROW		2
				COL		77	
				WIDTH		30	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	8	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Right

			END TEXT

			BEGIN TEXT

				EXPRESSION	TODOS->DETALLE
				ROW		2	
				COL		110	
				WIDTH		50	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	8	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 

			END TEXT

			BEGIN TEXT

				EXPRESSION	IF(TODOS->VALO>0,TODOS->VALO,'')
				ROW		2	
				COL		165	
				WIDTH		30	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	8	
				FONTBOLD	.F.
				FONTITALIC	.F.
				FONTUNDERLINE	.F.
				FONTSTRIKEOUT	.F.
				FONTCOLOR	{ 0 , 0 , 0 }
				ALIGNMENT	Left 

			END TEXT

			BEGIN TEXT

				EXPRESSION	IF(TODOS->VALO<0,TODOS->VALO,'')
				ROW		2	
				COL		180	
				WIDTH		30	
				HEIGHT		10	
				FONTNAME	'Arial'
				FONTSIZE	8	
				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(_PageTot))
				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 Transacciones: ' + Str(RecCount()) + chr(13) + 'User: '  + IDUSER
				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	TODOS->CUENTA

			BEGIN GROUPHEADER

				BANDHEIGHT	15

				BEGIN TEXT

					EXPRESSION	TODOS->CUENTA + ' .- ' + MAESTRO->NOMBRE
					ROW		5
					COL		18	
					WIDTH		180	
					HEIGHT		30
					FONTNAME	'Arial'
					FONTSIZE	12	
					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

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 » Wed Oct 15, 2014 3:08 pm

Louis, no puedes disponibilizar los dbfs ??
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

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

Post by LOUIS » Wed Oct 15, 2014 4:32 pm

Sí Amigo Pablo, con gusto (son 2 dbf)

CAMBIÉ UNA SENTENCIA EN LO SIGUIENTE:
SELE 2
USE TODOS
INDEX ON CUENTA+DTOS(FECHA) TO COD2 <----- ESTA LINEA CAMBIÉ (y suprimí las 2 siguientes)
SET RELA TO CUENTA INTO MAESTRO
IDUSER='L4ISALPHA'
EMP='MI EMPRESA C.A.'

Aprovechando, si no es mucha molestia, cuando generes el reporte ...
Cómo hago para obtener una última columna a la derecha, donde se vaya acumulando la suma o resta ?

Por ejemplo así ...
100.00 100.00
-100.00 0.00
- 15.90 - 15.90
720.00 704.10
- 66.62 637.48
133.23 770.71
etc etc etc ...

Muchas Gracias por tu Amabilidad.
Attachments
DBFS.rar
(4.76 KiB) Downloaded 148 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 » Thu Oct 16, 2014 1:01 am

Hola Louis,

Estube intentando encontrar una solucion para este caso que ya habíamos visto: _PageCount

Ahora estoy seguro de que la variable _PageCount no puede ser implementada. Y explico por qué.

Cuando accionamos el ExecuteReport, es criado el DC de la impresora y es formado un fila de impresion conforme es procesado linha a linha e página a página. Por lo tanto deberiamos calcular cuantas páginas irán ser creadas de forma prévia (antes de imprimir o antes de crear el DC. Es como si creáramos un archivo e despues mandarlo a la impresora. Encuanto es creado el archivo página a página es como consigue guardar cuantas páginas son creada para tal relatorio.

En cambio en el PREVIEW esta informacion ya está procesada y guarda en array, pero resulta que el preview nada mens es que la exibicion del archivo metafile creado. Por eso el título de window corresponde al total de páginas, pero en el documento impreso, no porque este fué creado a medida que fué procesado.

Lamentablemente, el _PageTot o el _PageCount que pasé, no está correcto y no estoy encontrando una solucion. :oops:

El resto de tu relatorio, todavia no lo pude analizar. Veré que puedo hacer mañana, pero este problema me hace quitar el sueño.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein

Post Reply