FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
CompositeReport con reportes anidados
Bueno, la cosa viene así.
Estoy haciendo un software para un campo de cria de vacas. Hay dos reportes diferentes Pesajes y Enfermedades. Me están pidiendo que muestre un "informe completo" (pesajes + enfermedades) para toda la colección de animales. Para que se entienda mejor, por cada animal debo mostrar el informe combinado. Por supuesto, para el propietario esto es un solo informe que ve en la vista previa e imprime. Lo que hice fue poner un CompositeReport y a través de un for ir cambiando los valores de cada animal al momento del Add. Un poco mas gráfico sería...
Las variables "glob..." son las que ponen los diversos datos en los reportes. Por ejemplo, en el caso de tener 10 vacas, me salen 10 hojas, pero los datos que pone en las 10 hojas corresponden a la última vaca de la lista. La llamada al composite es de la siguiente manera:
__________________
Uno es responsable de lo que hace y de lo que omite hacer. Última edición por santiago14 fecha: 08-12-2009 a las 01:41:44. Razón: Errores en código |
#2
|
||||
|
||||
Y que problemas tienes?
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#3
|
||||
|
||||
El problema está en que cuando muestro el informe (composite.preview) me salen todas las hojas con los datos del último animal de la lista.
Si tengo 10 animales, la composición del informe da por resultado 10 hojas, pero en todas me salen los datos de la última vaca.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#4
|
||||
|
||||
Cita:
Talves estas haciendo algo incorrecto en alguna parte de tu codigo, de tal manera que solo estas adicionando solo el reporte de la ultima Vaca o repitiendo la misma adicion. En todo caso siempre es bueno antes de previsualizar llamar al método Prepare de tu CompositeReport para preparar el reporte. Si con eso no se soluciona, pues deberias revisar bien código en que parte esta fallando. Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#5
|
||||
|
||||
Me parece a mí que eso está mal diseñado, aunque puedo equivocarme.
Digamos tú tienes un dataset bovinos, los 2 informes hacen uso de él, ahora en el evento AddReport del composite es donde tienes que agregar los informes (¡¡pero no los datos !!). Cuando haces el preview, entonces es cuando se recorre el dataset bovinos y para cada registro aparece el composite, es decir, los 2 quickreports en la misma página. Creo tu error está en suponer que en el evento OnAddReports realmente se construye el informe con los datos. No, ahí no se contruye nada, solo se monta el esquema del informe. Los datos se unen al informe al llamar al Preview del composite. La forma en que funciona ahora mismo es la correcta. Es decir, muestra los datos de 1 sólo registro porque el dataset está apuntando al penúltimo registro y te muestra 10 folios porque has añadido un monton de informes al composite. Creo no me he explicado, el evento OnAddReports debe ser:
Ese evento no es para iterar sobre los datos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
||||
|
||||
Cita:
Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#7
|
||||
|
||||
En principio sería de los datasets a los que está asociado cada informe, y creo es precisamente lo que quieres evitar (por ser más trabajo).
¿Has probado lo más fácil? mover el grillabovinos al primer registro, poner en el OnAddReports el código del mensaje anterior y mandar a imprimir. ¿qué sale? Lo pregunto porque al usar variables globales igual te funciona ya. Los dataset de esos 3 informes ¿de donde provienen? de una consulta, de una tabla, de una vista, Un SP ¿? Quizás incluso puedas cambiarle el SQL a los informes antes de lanzarlos, así podrías eliminar los registros que no te interesen...
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
||||
|
||||
Cita:
Las otras variables glob... pasan valores al encabezado del quickreport (fecha nacimiento, sexo, raza, etc.) Cada informe por separado funciona muy bien, claro, están pensados para mostrar los datos de un solo animal por vez (por click para que se entienda). Bajo ese concepto al momento de ver los datos de la vaca con identificación 1005 le paso el valor de codAnimal al quickreport y en el beforeprint se resuelve todo. La cosa es que ahora esta gente quiere mostrar (preview) e imprimir a todos los animales de una vez (de un solo click digamos). Lo mas sensato es pensar en usar el Composite para lograrlo. Pero bueno, los intentos que hice han sido en vano y son las líneas de código que puse arriba. La idea era que al tener varios animales en la grilla, recorrerla de principio a fin e ir pasando el codAnimal que activa las consultas internas y que el Composite me vaya armando el reporte final. No lo he logrado, quizás no esté lejos pero aún no sale. Bueno, espero que con esto se haya aclarado un poco mas. Desde ya muchas gracias. Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. Última edición por santiago14 fecha: 09-12-2009 a las 21:35:43. Razón: faltaban datos... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Select anidados | jaimeh | SQL | 13 | 08-12-2009 20:34:13 |
Datasets anidados | Gong | Conexión con bases de datos | 2 | 20-07-2007 16:05:41 |
Clientdatasets anidados con ADO | Johnny Q | Conexión con bases de datos | 4 | 03-11-2005 02:53:25 |
Filtros anidados.... | Phacko | Conexión con bases de datos | 2 | 19-03-2005 19:41:31 |
Select anidados | Ignacio | SQL | 5 | 23-02-2004 16:33:30 |
|