VFP6 Total de páginas de un Informe
Como puedo agregar en un informe el Número total de páginas, para hacerlo asà (Página 1 de X ) Existe alguna funcion para esto?. La busque en la ayuda y solo encontre la la funcion (_pageno) que me da la pagina actual. En caso de no existirla funcion como puedo hacerlo.
Muchas Gracias.
Muchas Gracias.
Tienes razon Tony, esta funcion aparece hasta la version 8, pero te pongo una direccion que de seguro te va a ayudar en esto:
http://www.portalfox.com/modules.php?op=modload&name=News&file=article&sid=3
http://www.portalfox.com/modules.php?op=modload&name=News&file=article&sid=3
De documento VFPtrucos:
Contador de hojas
Se corre el reporte dos veces. La primera vez la salida del reporte va a una ventana no visible.
* Se define la ventana
Define Window x From 1,1 To 20,20
* Se activa la ventana de manera invisible
Activate Window x NoShow
* Se prepara una variable pública para recibir el número de hojas
oApp.nPaginas = 0
* Se ejecura el reporte, cuyo nombre está en la variable cReporte
Report Form (cReporte)
* Se guarda el número de hojas del reporte
oApp.nPaginas = _PAGENO
* Se elimina la ventana de paso
Release Window x
* Se activa la ventana actual, en este caso "informes"
Activate Window Informes
* Se ejecuta el reporte a la impresora, como quieras
* Dentro de tu reporte usas la variable oApp.nPaginas para la expresión que
deseas.
* Por ejemplo "ALLTRIM(STR( _pageno)) de oApp.nPaginas"
Contador de hojas
Se corre el reporte dos veces. La primera vez la salida del reporte va a una ventana no visible.
* Se define la ventana
Define Window x From 1,1 To 20,20
* Se activa la ventana de manera invisible
Activate Window x NoShow
* Se prepara una variable pública para recibir el número de hojas
oApp.nPaginas = 0
* Se ejecura el reporte, cuyo nombre está en la variable cReporte
Report Form (cReporte)
* Se guarda el número de hojas del reporte
oApp.nPaginas = _PAGENO
* Se elimina la ventana de paso
Release Window x
* Se activa la ventana actual, en este caso "informes"
Activate Window Informes
* Se ejecuta el reporte a la impresora, como quieras
* Dentro de tu reporte usas la variable oApp.nPaginas para la expresión que
deseas.
* Por ejemplo "ALLTRIM(STR( _pageno)) de oApp.nPaginas"
Mas sencillo:
nTotalPages = 0
REPORT FORM MyReport NOCONSOLE
nTotalPages = _pageno
REPORT FROM MyReport TO PRINT NOCONSOLE
La primera vez no imprimira nada por que no existe la calusula TO PRINT, pero pondra el total de las paginas en _pageno. Para imprimir "pagina x de y", el reporte debera contener una expresion como la siguiente:
"Pagina "+ALLTRIM(STR(_pageno)) +" de "+ ;
ALLTRIM(STR(nTotalPages))
nTotalPages = 0
REPORT FORM MyReport NOCONSOLE
nTotalPages = _pageno
REPORT FROM MyReport TO PRINT NOCONSOLE
La primera vez no imprimira nada por que no existe la calusula TO PRINT, pero pondra el total de las paginas en _pageno. Para imprimir "pagina x de y", el reporte debera contener una expresion como la siguiente:
"Pagina "+ALLTRIM(STR(_pageno)) +" de "+ ;
ALLTRIM(STR(nTotalPages))
no se si lo necesitas aun, sin embargo en fox 8 hay una que se llama _pagetotal, sin embargo lo puedes crear asi:
*crea un reporte invisible
DEFINE WINDOW x FROM 1,1 TO 20,20
ACTIVATE WINDOW x NOSHOW
npaginas=0
REPORT FORM mireporte.frx
npaginas= _PAGENO && cuenta el total de las paginas al final del informe
RELEASE WINDOW x
luego vuelves a generar el reporte normalmente
*crea un reporte invisible
DEFINE WINDOW x FROM 1,1 TO 20,20
ACTIVATE WINDOW x NOSHOW
npaginas=0
REPORT FORM mireporte.frx
npaginas= _PAGENO && cuenta el total de las paginas al final del informe
RELEASE WINDOW x
luego vuelves a generar el reporte normalmente
