Skip to content

Ejecutar

huchim edited this page May 31, 2017 · 1 revision

Una vez que se ha creado el archivo del reporte, incluyendo la consulta SQL se puede ya trabajar en crear el reporte.

Recuperar la información del reporte

Antes de poder ejecutar el reporte debemos usar una instancia de ReportManager que se encargará de ejecutar la consulta y luego darle los datos a quién se encargará de hacer la presentación.

ReportManager requiere de una conexión a una base de datos, lo bueno de ello es que cualquier conexión que implemente [IDbConnection](IDbConnection como MySQL o SQL Server, nos sirve para comenzar.

using (var db = new DataContext())
{
    // Crear la instancia de quién se encargará de realizar la consulta.
    // Le pasamos la conexión activa, para que ejecute la consulta.
    var gestorReportes = new ReportManager(db.Database.Connection);

    // El SQL tiene filtros que sólo se ejecutarán si existen estas variables.
    var variablesReporte = new Dictionary<string, object>();
  
    // Agregamos la variable del maestro
    gestorReportes.Add("maestroId", 58);
  
    // Abrimos el reporte. "configuracionReporte" es el reporte del ejemplo de arriba.
    gestorReportes.Open("~/Reportes/alumnos.json", variablesReporte);
  
    ...
}

En el ejemplo anterior se usa una clase que deriva de DbContext (EntityFramework), pero se puede ajustar a su proyecto.

Como puede observar los pasos son.

  • Crear la instancia
  • Crear un diccionario con los argumentos
    • Agregar un argumento al reporte llamado maestroId y asignarle un valor 58.
  • Abrir el reporte.

Nota: La ruta al reporte debe existir, use Server.MapPath o env.ContentRootPath si trabaja en Web o Directory.GetCurrentDirectory para obtener la ruta al reporte.

Ejecutar reporte

Una vez que gestorReportes ya tiene la información y las variables, ahora si puede ejecutar el reporte de la siguiente manera:

// Creamos una instancia al generador.
// Puede ser HtmlGenerator, CsvGenerator, JsonGenerator, ExcelGenerator
var generador = new PdfGenerator();

El generador del reporte puede cambiar por ejemplo a HtmlGenerator, CsvGenerator, JsonGenerator, ExcelGenerator o PdfGenerator . Instale el paquete de acuerdo a sus necesidades.

// Recuperamos el reporte.
var reportDocument = gestorReportes.GetAllBytes(generador);

De esa manera recuperamos el contenido del reporte, ahora nos resta decidir si lo guardamos a un archivo o lo damos para descargar.

Ejemplo: Descargar reporte

public IActionResult Descargar()
{
    ...

    // Recuperamos el reporte.
    var reportDocument = gestorReportes.GetAllBytes(generador);
  
	return this.File(reportDocument, generator.MimeType, $"reporte{generator.FileExtension}");
}

Ejemplo: Guardar en archivo.

public void Guardar()
{
    ...

    // Recuperamos el reporte.
    var reportDocument = gestorReportes.GetAllBytes(generador);
    File.WriteAllBytes("reporte.pdf", reportDocument);
}
Clone this wiki locally