PDA

Ver la Versión Completa : Reporte con un nº máximo de filas.


barakuda
24-05-2017, 08:48:49
Buenos días,

Verán, tengo que generar unas impresiones con un numero de filas indeterminado, indeterminado por que unas veces pueden ser a 10 lineas otras a 16 y otras a 40.
Desde un clientdataset me traigo los datos que, pueden tener mas de 1000 registros. Mi problema es que necesito encontrar la manera de que cuando me lleguen por ejemplo 500 registros estos se impriman 10 o 15 o 40 por hoja según se requiera.

Pongo un ejemplo:
El clientdataset me retorna 30 registros.
Se requiere que por hoja solo se impriman 10 filas, por lo que deberían de salir 3 hojas.
El nº de hojas me da lo mismo la condición es que por hoja se impriman las X filas (10, 15, 40).

Pueden arrojarme algo de luz.

Desde ya, muchas gracias.

newtron
24-05-2017, 09:50:11
Buenos días,

Verán, tengo que generar unas impresiones con un numero de filas indeterminado, indeterminado por que unas veces pueden ser a 10 lineas otras a 16 y otras a 40.
Desde un clientdataset me traigo los datos que, pueden tener mas de 1000 registros. Mi problema es que necesito encontrar la manera de que cuando me lleguen por ejemplo 500 registros estos se impriman 10 o 15 o 40 por hoja según se requiera.

Pongo un ejemplo:
El clientdataset me retorna 30 registros.
Se requiere que por hoja solo se impriman 10 filas, por lo que deberían de salir 3 hojas.
El nº de hojas me da lo mismo la condición es que por hoja se impriman las X filas (10, 15, 40).

Pueden arrojarme algo de luz.

Desde ya, muchas gracias.

Hola.

No dices qué reporteador estás usando para los informes pero imagino que las filas por página dependerán de la configuración del informe que uses sea el que sea.

Saludos

barakuda
24-05-2017, 09:57:56
Vaya tienes toda la razón, utilizo rave report.
El tema es que desconozco si es posible pasar como parámetro el nº de filas max por hoja que debe meter

newtron
24-05-2017, 10:11:55
Vaya tienes toda la razón, utilizo rave report.
El tema es que desconozco si es posible pasar como parámetro el nº de filas max por hoja que debe meter

Pues la verdad es que no sé porque no conozco rave report pero como mal menor puedes tener distintos informes configurados con distintas lineas por página y emitir uno u otro según te interese.

Saludos

barakuda
24-05-2017, 10:28:22
Si, en esa solución ya pensé pero la idea es minimizar todo y que un solo tipo de report valga para todos los datos.
Lo que de momento tengo echo, digamos lo a si, es una especie de contador for i:=0 to X esto me va llenando un clinetdataset con un max de X registros, a continuación mando a llamar al report este lee del clientdataset y me imprime las X lineas antes cargadas, cuando acaba vació el clientdtaset para volver a hacer el paso anterior, asta el final del clientdataset que contiene los datos del query.

Esto me funciona y pero me da la sensación que estoy dando excesivas vueltas.

rafacarpi
24-05-2017, 11:59:31
Hace mucho que no toco Rave y actualmente no tengo ni los componentes instalados. Te comento esto por si te puede servir de algo, actualmente uso QuickReport y en el existe un evento OnNeedData y en ese evento puedes jugar con el Recno del ClientDataSet y saltar las páginas.

identsoft
24-05-2017, 13:53:33
¿De que depende que el impreso tenga 10,15 o 40 lineas?
Se me ocurre calcular el tamaño de la banda de detalle a cada caso, pasar un parámetro a Rave (p.e. 1 para 10 lineas, 2 para 15 lineas y 3 para 40 lineas) y antes de imprimir la banda, en el editor de eventos, ajustar el tamaño de la banda al nº de lineas a imprimir. No lo he probado pero creo que si se podrá.

identsoft
24-05-2017, 13:57:48
Tienes una propiedad en la banda de detalle que es MaxRows que dice el máximo nº de registros que puedes imprimir en dicha banda.
Pasando un parámetro, puedes ajustar el maxrows al nº de lineas a imprimir.

barakuda
24-05-2017, 17:29:45
El MaxRows nos imprimirá el nº de lineas que le pasemos pero el resto de registros no lo hace, si por ejemp el client le pasa 100 registros al hacer el MaxRows de 10 solo sacara una hoja con 10 registros los otros 90 los desecha.
Desde hace un tiempo estoy pensando en utilizar otro reporteador como el quickreport o el fastreport el por que no lo hice es porque tengo varios programas que de tanto en tanto hay que modificar y en ellos utilice rave report, pero creo que eso deberá de cambiar.

identsoft
24-05-2017, 17:47:44
La otra solución es la que comenté al principio. La banda tiene la propiedad Height. Define el tamaño en función del número de lineas a imprimir. En el editor de eventos, le asignas el valor en función de las lineas (p.e. 10 lineas, Height = 0,500, 15 lineas, Height = 0,400,
40 lineas Height = 0,100)
(Los valores me los he inventado. Hay que probar.)
En cuanto a lo del cambio de reporteador, eso es decision tuya. Si ves que no te sirve o se queda corto, pues es el momento de cambiar. A mí, de momento, me sirve.

JJAlf
24-05-2017, 19:24:55
No conozco el Rave así que no sé que opciones tiene, pero así en global, se me ocurren 2 opciones:
- Forzar el salto de página, por código, si existe la opción.
- Supongo que existirán los grupos (agrupación de datos) y que éstos permitirán un salto de página al cambiar, si el sistema permite que el elemento de agrupación sea una variable, sólo tienes que controlar esa variable para que valga num_registro_real div num_lineas_por_pagina.