none
Generar varios reportes en un mismo Reportviewer utilizando datatables. VB.NET(2012) RRS feed

  • Pregunta

  • Buenas tardes. Estoy haciendo mis primeros reportes en Reportviewer, he leido varios post acerca del tema e intentado de muchas maneras, pero no logro realizar mas de un reporte utilizando el mismo reportviewer, y por ende, el mismo form.

    De la única forma que me sale el reporte es asignandole el reporte al reportview de la manera que muestra la imagen.

    Seria muy bueno poder hacerlo en tiempo de ejecución.

    Agradecería mucho su ayuda ya que me encuentro algo trabado.

    Desde ya muchas gracias.

    • Cambiado Karen Malagón lunes, 29 de junio de 2015 20:38 ReportViewer issue
    jueves, 25 de junio de 2015 19:16

Respuestas

  • Prueba ejecutar el reporte con el siguiente código

            ReportViewer1.LocalReport.DataSources.Clear()
            ReportViewer1.LocalReport.ReportPath = "Report1.rdlc"
            Dim dsOrigenDatos As New ReportDataSource("DataSet1_DataTable1", dspub_rpt_gral.Tables(0))
            ReportViewer1.LocalReport.DataSources.Add(dsOrigenDatos)
            ReportViewer1.LocalReport.Refresh()


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos

    • Marcado como respuesta CM16 martes, 30 de junio de 2015 11:38
    viernes, 26 de junio de 2015 19:50

Todas las respuestas

  • Hola

    Pues si deseas usar el mismo Control para mostrar varios reportes dependiendo de ciertos parámetros puedes hacerlo utilizando Case o If solo cambiaría el ReportPath

    If vMiVariable = "Algo" Then

    ReportViewer1.LocalReport.ReportPath = "MiReporte.rdlc"

    End If

    Pero debes tener en claro que los reportes tienen diferentes parámetros así que tendrías que declararlos dentro del If dependiendo del Reporte que deseas mostrar.


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos

    jueves, 25 de junio de 2015 19:27
  • Muchas gracias por la respuesta. Ya lo intenté, pero aparentemente algo me estoy pasando por alto.

    Con este subproceso intento generar el reporte:

         Sub rpt_pro_abasto_clasificacion_pu(PathReporte As String, dataset As DataSet)
            Dim ds As New Microsoft.Reporting.WinForms.ReportDataSource("DataSetProducts_ShowProductByCategory", dataset.Tables(0))
            ReportViewer1.LocalReport.ReportPath = "rpt_pro_abasto_clasificacion_du.rdlc"
            ReportViewer1.LocalReport.DataSources.Clear()
            ReportViewer1.LocalReport.DataSources.Add(ds)
            ReportViewer1.LocalReport.Refresh()
        End Sub

    jueves, 25 de junio de 2015 19:45
  • Ese proceso recibe una ruta y un dataset, porque entonces colocas la ruta de manera manual?


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos


    • Editado José Barba jueves, 25 de junio de 2015 19:52
    jueves, 25 de junio de 2015 19:51
  • exactamente
    jueves, 25 de junio de 2015 19:53
  • Deberías colocar la variable String que tienes como parámetro y no darle una ruta en duro como hiciste

     Sub rpt_pro_abasto_clasificacion_pu(PathReporte As String, dataset As DataSet)
            Dim ds As New Microsoft.Reporting.WinForms.ReportDataSource("DataSetProducts_ShowProductByCategory", dataset.Tables(0))
            ReportViewer1.LocalReport.ReportPath = PathReporte
            ReportViewer1.LocalReport.DataSources.Clear()
            ReportViewer1.LocalReport.DataSources.Add(ds)
            ReportViewer1.LocalReport.Refresh()
        End Sub


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos

    jueves, 25 de junio de 2015 21:24
  • Buen dia José, intenté lo que me sugeriste y sigue sin mostrarme nada. ¿Alguna otra cosa que se te ocurra y pueda probar?

    ¿Mientras corro el depurador de la aplicación, si en el path le pongo solo en nombre del reporte, lo busca en la carpeta debug no es asi?

    viernes, 26 de junio de 2015 11:02
  • Hola

    Los Reportes Locales los tienes imagino que en una carpeta llamada por ejemplo "Reports". Ahora ese Sub recibirá de acuerdo a ciertos parámetros una ruta y un dataset, cuando realizas el debug recibes una ruta válida? y el dataset se llena con las columnas que necesita tu reporte?


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos

    viernes, 26 de junio de 2015 15:14
  • Si, ya me aseguré que este leyendo bien la carpeta de los reportes. Pero me sigue trayendo el reporte vacío. Este el el código con el que estoy probando en este momento.

     Dim conexion As New CConexion
            Dim datos As New CDatos
            dspub_rpt_gral = conexion.rpt_pro_abasto_clasificacion_du(datos).Copy

            ReportViewer1.LocalReport.ReportEmbeddedResource = "PROYECTO1.Report1.rdlc"
            ReportViewer1.LocalReport.ReportPath = "Report1.rdlc"
            ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("DataSet1_DataTable1", dspub_rpt_gral.Tables(0)))
            ReportViewer1.LocalReport.Refresh()


    Es raro... leí bastantes tutoriales y todavia no me conecta .


    • Editado CM16 viernes, 26 de junio de 2015 16:34 Corrección
    viernes, 26 de junio de 2015 16:32
  • Quizás alguna columna no se está asignado, es decir cuando creas el reporte tu asignas las columnas que deseas mostrar en los controles. Podrías mostrar una imagen del diseño de tu reporte local?

    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos

    viernes, 26 de junio de 2015 16:59
  • Te envío las imagenes solicitadas. Lo hice bien básico porque es mi primer reporte con reportviewer y quería ver primero el funcionamiento.

    Y este es el dataset tipado.

    viernes, 26 de junio de 2015 17:20
  • Los reportes locales están contenido dentro de una carpeta? o están en la raíz del proyecto?

    Has verificado que los nombres de las columnas del dataset del reporte sean los mismo que el dataset que le asignas como datasource?


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos


    • Editado José Barba viernes, 26 de junio de 2015 17:43
    viernes, 26 de junio de 2015 17:38
  • Los reportes se encuentran en la raíz de un proyecto, pero al depurarlo me parece que toma de la carpeta Proyecto/Debug. De todas maneras, los puse en ambos lados, tanto en la carpeta raíz (donde se encuentran formularios, clases, etc), como en la carpeta debag, donde está el ejecutable compilado.

    viernes, 26 de junio de 2015 17:41
  • Prueba ejecutar el reporte con el siguiente código

            ReportViewer1.LocalReport.DataSources.Clear()
            ReportViewer1.LocalReport.ReportPath = "Report1.rdlc"
            Dim dsOrigenDatos As New ReportDataSource("DataSet1_DataTable1", dspub_rpt_gral.Tables(0))
            ReportViewer1.LocalReport.DataSources.Add(dsOrigenDatos)
            ReportViewer1.LocalReport.Refresh()


    Si se solucionó tu consulta no olvides marcar la respuesta de esta forma mantendremos el orden en el Foro.

    José Carlos Barba Gutierrez
    Lima - Perú
    Saludos

    • Marcado como respuesta CM16 martes, 30 de junio de 2015 11:38
    viernes, 26 de junio de 2015 19:50
  • Buenos días Juan Carlos. Probé con ese código y funcionó perfectamente.

    Muchas gracias a todos por su atención.

    Saludos, y gracias nuevamente

    martes, 30 de junio de 2015 11:38