2011-12-05 12 views
5

Pensé que esto sería algo que estaría bastante bien documentado ya que es un tema central para JasperReports, sin embargo, no puedo encontrar una respuesta para esto en ninguna parte.JasperReport: propósito de la banda de detalles

¿Cuál es el propósito/función/intención de una banda de detalles? ¿Se supone que es solo la parte central o central de un informe?

De otra pregunta se me indicó que hay una relación 1: 1 entre una banda de detalles y un registro/bean proporcionado por JRDatasource. Esta revelación saca a la luz algunas preguntas tangenciales:

  • Es posible agregar bandas de detalle programáticamente en Java; ¿Qué sucede si especifica más/menos bandas de detalles (programáticamente) que registros/beans devueltos por su JRDataSource?
  • ¿Cuál es la relación entre una banda de detalles y, por ejemplo, una página dentro de un documento PDF exportado? ¿1 banda de detalles se traduce a 1 página?
  • ¿Qué ocurre si pasa la fuente de datos JasperFillManager a null? ¿Es posible todavía tener bandas de detalles?

No me gusta hacer preguntas múltiples a la vez, pero estas están relacionadas de manera similar Prefiero hacerlo todo a la vez que llenar SO con múltiples preguntas casi idénticas. Gracias por adelantado.

Respuesta

8

La banda de detalles es de hecho la banda donde se informa cada elemento de la fuente de datos. El motor de informes itera automáticamente sobre la fuente de datos e inserta datos en la plantilla de la banda de detalles con el elemento respectivo de la fuente de datos.

Por supuesto, puede tener varios elementos en una sola página. De acuerdo con las propiedades de la banda (división permitida, altura, etc.), el paginado será manejado por Jasper Reports automáticamente, y es el motor el que decidirá cuántos elementos se imprimen en cada página, cuándo ir a la siguiente página, etc.

La banda de detalles no se imprime si no tiene nada en la fuente de datos. La impresión de las otras bandas depende de los parámetros del informe.

0

Como lo recuerdo, puede ver la banda de detalles como el "modelo" para una fila/registro en el informe. Todos los elementos que ponga dentro de la banda de detalles se repetirán para cada registro provisto por JRDatasource.

Por ejemplo, su banda de detalles puede tener dos campos de texto, uno con el valor $ {companyName} y otro con el valor value $ {revenue}.

Si ahora pasar su informe de tres filas, a continuación, "companyName" y "ingresos" se evalúa para cada uno de ellos, y usted puede obtener algo como:

|Apple    | $1000,000,000| 
|Microsoft   | $500,000,000| 
|My amazing company |   $12| 

Es decir, el contenido detalle banda ha repetido tres veces

Así: - Como ve, probablemente solo necesite una banda de detalles configurada. No estoy seguro si está permitido en el JRXML tener múltiples. - No hay relación entre la banda de detalles y una página. La paginación se maneja por separado. - No estoy seguro, para ser honesto. Mi mejor opción es una excepción o no se obtienen filas donde se supone que se debe representar la banda de detalle.

2

El propósito del detalle band es proporcionarle un modelo donde coloca y configura los elementos del informe. No creo que la relación entre una banda de frijoles y detalles sea uno a uno, ya que puedes colocar muchos elementos de propiedades de frijoles en un frijol. Entonces, diría que la banda de detalles está estrechamente ligada a una colección de elementos de informe de bean.

Una diferencia, sin embargo, es el hecho de que la funcionalidad de la banda de detalle es irrelevante para la cantidad de beans/registros que proporciona a través de JRDataSource. La banda de detalles iterará a través de todos ellos hasta que la fuente de datos se "consuma".

Además, personalmente considero muy útil que la banda de detalles le permita iterar a través de una colección de propiedades de frijol. Por lo tanto, al colocar varias propiedades en una banda de detalles se recorrerán todas ellas, antes de continuar.

Si pasa null como DataSource, no obtendrá ningún dato en el informe, y solo aparecerá static.

0

No entiendes qué es una banda de detalles.

La banda de detalle de su informe se imprimirá para cada uno de los elementos en su fuente de datos. Si utiliza un origen de datos de base de datos, el detalle se imprimirá tantas veces como filas tenga su conjunto de resultados. Si usa un origen de datos JRBeanCollection, la banda de detalles se imprimirá tantas veces como elementos tenga su colección.

para responder a sus preguntas:

  1. no se puede especificar más de un detailband, es ilegal. Puede usar subinformes para ese fin.

  2. El informe generará tantas bandas de detalle como sea posible por página. Por otro lado, puede hacer que la banda de detalles tenga la misma altura que la salida de informe deseada (menos la altura del encabezado/pie de página/etc.). Si desea imprimir el informe en un papel A4, puede hacer que su banda de detalles sea de 297 mm de alto (considerando que no tiene otras bandas). Entonces cada banda de detalles será impresa en una página separada.

  3. Si pasa un origen de datos vacío, el informe se generará con sin páginas.
+1

PUEDE especificar más de una banda de detalles, y a veces tiene mucho sentido hacer exactamente eso. Los subinformes son útiles ya que tienen su propio conjunto de datos, pero si desea utilizar los mismos datos que el informe principal, son menos eficientes que simplemente agregar otra banda de detalles. – GenericJon

0

La información que tiene es correcta, acaba de tener un ligero malentendido de lo que significa.

La relación 1: 1 está en tiempo de relleno; Una vez que se haya llenado el informe, habrá exactamente 1 banda de detalle para cada registro en el conjunto de datos. Cuando diseña el informe, solo agrega la banda una vez, pero esa banda se repite una y otra vez cuando se completa el informe.

Puede agregar tantas bandas de detalles como desee. Cada una de las bandas tiene una relación 1: 1 con los registros del conjunto de datos, y todas las bandas de detalles se completan antes de pasar al siguiente registro (es decir, si tiene tres bandas A, B y C; su orden en el informe ser ABCABC ... no AAA ... BBB ... CCC ...).

  • Es posible añadir bandas de programación, pero el punto importante a destacar es que va a agregar bandas al diseño de informes , no al informe completo.Así que al igual que con un diseño jrxml, agregas la banda una vez y se repite para cada registro. Check this example.

  • No hay una relación entre las páginas de informes y las bandas de detalles. El llenador del informe intentará poner tanto en una página como sea posible respetando el splitType de cada banda, así como otras propiedades del informe.

  • ¿Está pasando un origen de datos nulo está permitido? En cualquier caso, la relación 1: 1 sigue siendo válida: un conjunto de datos con 0 registros produce 0 bandas de detalle en el informe.

Cuestiones relacionadas