Page 2 of 3
# TOTAL DE PAGINAS
Posted: Sat Oct 11, 2014 1:50 pm
by Pablo César
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 \])
Re: # TOTAL DE PAGINAS
Posted: Sat Oct 11, 2014 3:24 pm
by LOUIS
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í
Pudieras agregar el código del REPDEMO.RPT externo del prg, para ver qué cambió ahí ?
Gracias.
Re: # TOTAL DE PAGINAS
Posted: Sat Oct 11, 2014 8:07 pm
by Pablo César
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
# TOTAL DE PAGINAS
Posted: Sat Oct 11, 2014 8:28 pm
by Pablo César
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

Re: # TOTAL DE PAGINAS
Posted: Tue Oct 14, 2014 10:40 pm
by LOUIS
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
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 ?
Se agradece mucho tu amabilidad.
Re: # TOTAL DE PAGINAS
Posted: Wed Oct 15, 2014 11:38 am
by Pablo César
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
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.
Re: # TOTAL DE PAGINAS
Posted: Wed Oct 15, 2014 2:30 pm
by LOUIS
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
Re: # TOTAL DE PAGINAS
Posted: Wed Oct 15, 2014 3:08 pm
by Pablo César
Louis, no puedes disponibilizar los dbfs ??
Re: # TOTAL DE PAGINAS
Posted: Wed Oct 15, 2014 4:32 pm
by LOUIS
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.
# TOTAL DE PAGINAS
Posted: Thu Oct 16, 2014 1:01 am
by Pablo César
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.
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.