Problema con informe y subinformes
Publicado por Eduardo (6 intervenciones) el 06/08/2010 13:59:35
Hola, tengo un informe que tiene a su vez varios subinformes.
La cabecera del informe corresponde a una tabla llamada Registros
Los subinformes corresponden a tablas llamadas Actividades...
Intento hacer un informe que me muestre de manera agrupada todos los registros de la tabla Registros con todas sus Actividades.
El diseño que he hecho ha sido poner la cabecera del informe y luego un grupo donde tengo metidos todos los subinformes, cada uno en una sección.
El problema que tengo es que no se como hacer correctamente la carga del informe.
Tengo un dataset que contiene todos los registros de la tabla Registros y luego otros dataset que contienen cada tipo de actividad.
Lo que hago es recorrer el dataset principal porque así me cojo el idRegistro que utilizo para ir filtrando cada tipo de actividad y con el dataset que origina lo uso para cargar el subreport.
Por las pruebas que he hecho sólo me muestra correctamente los datos del último registro.
Os pongo un trozo del código para que se vea más claro.
Dim reportDocument As New ReportDocument()
reportDocument.Load(Application.StartupPath & "\reports\reportPrincipal.rpt")
'Registros
Dim dsRegistros As New DataSet()
dsRegistros.Tables.Add(dtRegistros)//Este datatable contiene todos los registros de la tabla Registros que quiero mostrar
reportDocument.SetDataSource(dsRegistros)
For Each row As DataRow In dtRegistros.Rows
Dim id As Integer = Integer.Parse(row("idRegistro").ToString())
Dim dsActPublicas As New DataSet()
dsActPublicas.Tables.Add(tipoActPublicasAdapter.GetActPublicas(id))
Dim dsActPrivadas As New DataSet()
dsActPrivadas.Tables.Add(tipoActPrivadasAdapter.GetActPrivadas(id))
reportDocument.OpenSubreport("rptActPublicas.rpt").SetDataSource(dsActPublicas)
reportDocument.OpenSubreport("rptActPrivadas.rpt").SetDataSource(dsActPrivadas)
Next
reportDocument.Refresh()
frmVisorInformes.CrystalReportViewer.ReportSource = reportDocument
frmVisorInformes.CrystalReportViewer.Refresh()
frmVisorInformes.ShowDialog()
Aqui hay algo que no esté haciendo bien, así que si alguien me ayuda, le estaré muy agradecido.
Un saludo, Eduardo.
La cabecera del informe corresponde a una tabla llamada Registros
Los subinformes corresponden a tablas llamadas Actividades...
Intento hacer un informe que me muestre de manera agrupada todos los registros de la tabla Registros con todas sus Actividades.
El diseño que he hecho ha sido poner la cabecera del informe y luego un grupo donde tengo metidos todos los subinformes, cada uno en una sección.
El problema que tengo es que no se como hacer correctamente la carga del informe.
Tengo un dataset que contiene todos los registros de la tabla Registros y luego otros dataset que contienen cada tipo de actividad.
Lo que hago es recorrer el dataset principal porque así me cojo el idRegistro que utilizo para ir filtrando cada tipo de actividad y con el dataset que origina lo uso para cargar el subreport.
Por las pruebas que he hecho sólo me muestra correctamente los datos del último registro.
Os pongo un trozo del código para que se vea más claro.
Dim reportDocument As New ReportDocument()
reportDocument.Load(Application.StartupPath & "\reports\reportPrincipal.rpt")
'Registros
Dim dsRegistros As New DataSet()
dsRegistros.Tables.Add(dtRegistros)//Este datatable contiene todos los registros de la tabla Registros que quiero mostrar
reportDocument.SetDataSource(dsRegistros)
For Each row As DataRow In dtRegistros.Rows
Dim id As Integer = Integer.Parse(row("idRegistro").ToString())
Dim dsActPublicas As New DataSet()
dsActPublicas.Tables.Add(tipoActPublicasAdapter.GetActPublicas(id))
Dim dsActPrivadas As New DataSet()
dsActPrivadas.Tables.Add(tipoActPrivadasAdapter.GetActPrivadas(id))
reportDocument.OpenSubreport("rptActPublicas.rpt").SetDataSource(dsActPublicas)
reportDocument.OpenSubreport("rptActPrivadas.rpt").SetDataSource(dsActPrivadas)
Next
reportDocument.Refresh()
frmVisorInformes.CrystalReportViewer.ReportSource = reportDocument
frmVisorInformes.CrystalReportViewer.Refresh()
frmVisorInformes.ShowDialog()
Aqui hay algo que no esté haciendo bien, así que si alguien me ayuda, le estaré muy agradecido.
Un saludo, Eduardo.
Valora esta pregunta


0