none
¿Se puede cargar un archivo PDF en ReportViewer? RRS feed

  • Pregunta

  • Hola,

    Mi problema tiene dos partes, la primera de ella es cómo guardo directamente el reporte generado en una ruta específica a través de código y el segundo problema tiene que ver con la pregunta que he formulado. Lo que intento hacer es que, cuando el reporte termine de cargarse correctamente pueda guardarlo de manera automática en una ruta específica y con un nombre único. La idea de hacer esto, es debido a que cuando el usuario quiera volver a ver el reporte ya no haga las consultas a la base de datos, sino que cargue el PDF que anteriormente se ha guardado. El nombre del PDF debería guardarse con el ID del empleado , que es con el cual mando a hacer las consultas necesarias para que los datos se muestren, ya que ese identificador es único.

    Espero haberme explicado y puedan ayudarme.

    Gracias.



    Antonio Mata

    jueves, 22 de noviembre de 2018 6:10

Respuestas

  • La respuesta a la pregunta principal es que no, no se puede cargar un PDF en el ReportViewer.

    Si lo único que quieres es no acceder a la base de datos de nuevo si quieren volver a ver el reporte, entonces hay otra alternativa: Suponiendo que se trate de un reporte en modo local (y no en modo servidor, es decir, un .rdlc y no un .rdl) entonces lo que harás para emitirlo es traer los datos de la base de datos a un DataSet y luego pasarle el DataSet al ReportViewer. Pues bien, el DataSet tiene un par de métodos, WriteXml y ReadXml, que te permiten salvarlo a disco en un archivo XML y luego recuperarlo de disco. Si la primera vez que cargas los datos salvas el DataSet a disco, entonces cuando quieras volver a ver el informe puedes recuperar el XML al DataSet y pasárselo de nuevo al ReportViewer, y verías de nuevo el mismo informe sin necesidad de acceder de nuevo a la base de datos.

    • Propuesto como respuesta Pablo RubioModerator jueves, 22 de noviembre de 2018 16:35
    • Marcado como respuesta A. Mata jueves, 22 de noviembre de 2018 19:27
    jueves, 22 de noviembre de 2018 7:05
    Moderador
  • hola

    >>cómo guardo directamente el reporte generado en una ruta específica a través de código

    quizas ayude algo como esto

     ReportViewer.PDF

    >>El nombre del PDF debería guardarse con el ID del empleado , que es con el cual mando a hacer las consultas

    esto depende de como definas el nombre del archivo, si tienes el dato del empleado lo usas para construir el nombre

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pablo RubioModerator jueves, 22 de noviembre de 2018 16:35
    • Marcado como respuesta A. Mata jueves, 22 de noviembre de 2018 19:28
    jueves, 22 de noviembre de 2018 12:26

Todas las respuestas

  • La respuesta a la pregunta principal es que no, no se puede cargar un PDF en el ReportViewer.

    Si lo único que quieres es no acceder a la base de datos de nuevo si quieren volver a ver el reporte, entonces hay otra alternativa: Suponiendo que se trate de un reporte en modo local (y no en modo servidor, es decir, un .rdlc y no un .rdl) entonces lo que harás para emitirlo es traer los datos de la base de datos a un DataSet y luego pasarle el DataSet al ReportViewer. Pues bien, el DataSet tiene un par de métodos, WriteXml y ReadXml, que te permiten salvarlo a disco en un archivo XML y luego recuperarlo de disco. Si la primera vez que cargas los datos salvas el DataSet a disco, entonces cuando quieras volver a ver el informe puedes recuperar el XML al DataSet y pasárselo de nuevo al ReportViewer, y verías de nuevo el mismo informe sin necesidad de acceder de nuevo a la base de datos.

    • Propuesto como respuesta Pablo RubioModerator jueves, 22 de noviembre de 2018 16:35
    • Marcado como respuesta A. Mata jueves, 22 de noviembre de 2018 19:27
    jueves, 22 de noviembre de 2018 7:05
    Moderador
  • hola

    >>cómo guardo directamente el reporte generado en una ruta específica a través de código

    quizas ayude algo como esto

     ReportViewer.PDF

    >>El nombre del PDF debería guardarse con el ID del empleado , que es con el cual mando a hacer las consultas

    esto depende de como definas el nombre del archivo, si tienes el dato del empleado lo usas para construir el nombre

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Pablo RubioModerator jueves, 22 de noviembre de 2018 16:35
    • Marcado como respuesta A. Mata jueves, 22 de noviembre de 2018 19:28
    jueves, 22 de noviembre de 2018 12:26
  • Hola Alberto,

    El reporte es tipo RDLC, y uso listas tipadas para cargarlos al reporte.

    List<_Personas> _lst_personas = Query.Get_Personas();
    

    Luego se lo paso al reporte.

    Lo que haré entonces será crear otro formulario y cargar el PDF. Tal vez con alguna librería que me permita hacerlo.

    Aunque también estaría interesado en resolver mi problema con archivos XML. Si pueden proporcionarme un ejemplo sería de mucha utilidad. 

    Gracias. :-)


    Antonio Mata

    jueves, 22 de noviembre de 2018 17:11
  • Hola Leandro,

    Leeré un poco sobre cómo usar ese paquete.

    Gracias. :-)


    Antonio Mata

    jueves, 22 de noviembre de 2018 17:22
  • Logré exportar el PDF siguiendo lo que encontré en este enlace:

    https://stackoverflow.com/questions/2684221/creating-a-pdf-from-a-rdlc-report-in-the-background

    Ahora sólo me falta abrirlo desde la aplicación. :-)!


    Antonio Mata

    jueves, 22 de noviembre de 2018 17:56