none
Ejecución de Reportes RRS feed

  • Pregunta

  • Tengo el siguiente codigo que genera un pdf (tipo certificación) a partir de un reporte, una vez se genera el reporte se envia por correo. El problema que se esta presentando es que algunas veces el reporte se van sin información, debido a que en base de datos no hay información con esos parametros. Lo que se quisiera saber es que si al ejecutar el reporte, con sus respectivos parámetros este no trae datos, no genere el pdf y mucho menos envié correo.

        string UrlReporting = "miservidorReportes";
                string ReportFolder = "mifolder";
                string NombreReporte = "mireporte";

    byte[] archivo=null;

     List<ReportParameter> parametrosReporte = new List<ReportParameter>();

    parametrosReporte = new List<ReportParameter>() {
                       new ReportParameter("param1", param1, false),
                        new ReportParameter("param2", param2, false)};

                    

     ReportViewer reportViewer = new ReportViewer();

                reportViewer.ProcessingMode = ProcessingMode.Remote;
                reportViewer.ServerReport.ReportServerUrl = new Uri(UrlReporting);
                reportViewer.ServerReport.ReportPath = String.Format("/{0}/{1}", ReportFolder, NombreReporte);

                try
                {
                    reportViewer.ServerReport.SetParameters(parametrosReporte);
                    reportViewer.ServerReport.Refresh();


                }
                catch (Exception ex)
                {

    throw ;

                }
               

    try
                {

                    archivo = reportViewer.ServerReport.Render("PDF");
                 
                    return true;
                }
                catch (Exception ex)
                {
                  
                    throw new Exception(string.Format("Error al exportar el archivo certificado Error: {0}",  Error.ToString()));

                }

    EnviarCorreo(de, para, asunto, mensaje, archivo);


    Harold Chia

    viernes, 22 de marzo de 2019 15:46

Todas las respuestas

  • Se me ocurren un par de opciones. Una sería replicar en el código C# la misma consulta SQL que utilice internamente el reporte y ejecutarla a ver si devuelve algún registro. Si no devuelve ninguno, no ejecutar el reporte. La otra sería ejecutar el reporte usando algún formato sencillo, tal como CSV, en lugar de PDF. Después se examina el CSV y así se ve si tiene registros. Si tiene alguno, entonces se vuelve a ejecutar el Render, pero esta vez sí en formato PDF, y se envía el correo resultante.
    viernes, 22 de marzo de 2019 19:58
    Moderador