PDA

Ver la Versión Completa : ¡Como imprimir columnas que no caben en QR?


AzidRain
13-01-2012, 00:27:27
Tengo un pequeño problema, aunque ya he pensado en algunas soluciones quisiera ver si a alguien del Club se le ocurre alguna otra cosa.

Tenemos una tabla x con 20 columnas y 8 filas por decir así.

En QReport solo caben 10 columnas aun reduciendo el texto al mínimo aceptable.

Lo que quiero lograr es que se impriman las primeras 10 columnas y sus 8 filas y una vez impresas, en la parte de abajo se impriman las restantes 10.

Algo asi (aunque con 5 columnas):


col 1 col 2 col 3 col 4 col 5
fila 1
fila 2
fila 3
fila 4
fila 5
fila 6
fila 7
fila 8
---------------------------------------------
totales

col 6 col 7 col 8 col 9 col 10
fila 1
fila 2
fila 3
fila 4
fila 5
fila 6
fila 7
fila 8
---------------------------------------------
totales



A ver que ideas salen...saludos

luisgutierrezb
13-01-2012, 17:24:02
puede sonar muy trivial, pero no puedes imprimir con la hoja horizontal?? tal vez en tamaño oficio y horizontal puedas completar las 20, en caso de que no, algo que se me ocurre es que hagas 2 reportes, uno con las primeras 10 y luego otro con las siguientes 10, el quickreport tiene un componente para "juntar" reportes, el cual hara como si se hubieran generado de uno solo los 2, no tengo Delphi a la mano para revisar el nombre del componente se llama algo asi como compositereport..

TiammatMX
13-01-2012, 17:32:52
Tengo un pequeño problema, aunque ya he pensado en algunas soluciones quisiera ver si a alguien del Club se le ocurre alguna otra cosa...

Lo que a mí me ha servido es calcular vía código el espaciamiento entre las columnas, reducir al mínimo el tamaño de la etiqueta justo para que quepan los datos y utilizar el modo apaisado de la página a imprimir...

AzidRain
13-01-2012, 17:39:16
El problema a resolver es que aun utilizando la hoja apaisada (horizontal) no caben la totalidad de columnas, lo cual a muchos nos ha sucedido en algún momento. El componente CompositeReport te imprime varios reportes como uno solo, pero no seguidos en la misma página. Es decir, si usamos 2 reportes, uno para las primeras 10 y otro para las otras 10 columnas, saldran en páginas separadas y la idea es que salga todo junto.

Casimiro Notevi
13-01-2012, 18:10:15
No entiendo bien, estimado amigo, pero si no cabe... no cabe, habrá que quitar algo :)

Edito: me acaba de salir tu ejemplo, no lo había visto antes.
Está complicado.

kapcomx
13-01-2012, 18:15:37
y si mandas la informacion tal y como la pusiste en tu ejemplo a un stringgrid y luego asocias ese stringgrid a un quick report en su propiedad OnNeedData...

asi imprimirias solo en cinco columnas

maeyanes
13-01-2012, 18:32:23
Hola...

No se si QR soporte subreportes, pero si es así, bien podrías usar esa característica.


--------------------- Subreporte 1 --------------------------
col 1 col 2 col 3 col 4 col 5
fila 1
fila 2
fila 3
fila 4
fila 5
fila 6
fila 7
fila 8
---------------------------------------------
totales
-------------------------------------------------------------
--------------------- Subreporte 2 --------------------------
col 6 col 7 col 8 col 9 col 10
fila 1
fila 2
fila 3
fila 4
fila 5
fila 6
fila 7
fila 8
---------------------------------------------
totales
-------------------------------------------------------------



Saludos...

oscarac
13-01-2012, 18:47:43
Recuerdo haber hecho esto en FOX !!!
Era un reporte donde mostraba los movimientos de los centros de costos que se utiilzaban dentro de un rango de fechas, como la informacion podria ser variable, incluso podria mostrarse en mas de 2 hojas por titulos

voy a buscarlo para darte la idea de como lo hice

AzidRain
14-01-2012, 03:04:42
Me inventé una posible solución aunque no la he implementado, solo hice pruebas en un reporte limpio.

Coloqué 4 QRLoopBands:

1.- Titulos de la primera parte
2.- Filas de la primera parte
3.- Titulos de la segunda parte
4.- Filas de la segunda parte.

Las Bandas de titulos les coloqué la propiedad PrintCount en 1 para que se impriman solo una vez.

Si recordamos QRLoopBand es una banda que se imprime sola el número de veces que indiquemos en su propiedad PrintCount. Lo que hice es armar los labels tal como quiero que quede cada fila (en este caso solo tengo que hacer una) y en el evento BeforePrint de la Banda de filas correspondiente llenar con los datos que correspondan a la fila en cuestion.

En el ejemplo que puse al inicio del hilo, son ocho filas, entonces le indicamos a las 2 bandas de filas que se imprimirán 8 veces. En el beforeprint de ambas bandas tomo los datos del array, grid o tabla que vaya a utilizar en cada caso.

De esta forma ya no me tengo que preocupar por espaciados, saltos de página ni nada, QReport lo hará solito y el reporte siempre saldrá en 2 partes.

Esta tediosón, pero peor es meterse con impresión directa o ir creando los labels. Lo voy a implementar y se los presento como me quedó.

fjcg02
14-01-2012, 15:17:57
Otra cosa que puedes hacer es inprimir todo en letra enana y regalarle una lupa al colega!

No te descojones, que yo hacía un informe en el tamaño de letra más pequeño que soportaba una impresora. Yo no conocía a quien consumía el informe, pero cuando a un compañero le pregunté de cuanto reran los aumentos de la lupa que usaba, me preguntó porqué lo sabía. El tío se gastaba un brazo articulado con una lupa gigante ( tipo flexo ) con el que estudiaba el informe.

Otra solución aunqe imagino que ya la has explorado es que le envies a excel la información y automatices la impresión. Excel controla mejor la forma de hacer escalado en la opción de ajustar el informe a x páginas de alto por y páginas de largo.

Un saludo