1

Hola a todos tengo la siguiente duda, Estoy haciendo un sistema de Planillas y Quiero enviar la información que tengo en un Grid a un reporte de Crystal... el Grid lleva información de los empleados a los que previamente ya se les hizo todos los cálculos y solamente hay que imprimir los recibos de pago para la entrega. Tengo la siguiente pantalla en donde esta el Grid y lo lleno con un Data Table.

private void FiltroGeneral()
    {
        //Variable para SELECT
        string cadena_sql = "";
        //Variable para Filtro
        string filtro = "";

        //Iniciando las variables con la informacion del Query de Tabla Planilla
        //Filtro General - filtrando fechas de DateTimePicker
        filtro = "fechaInicial >= '" + DtpIni.Value.Date.ToString("yyyy-MM-dd") + "' and FechaFinal <= '" + DtpFin.Value.Date.ToString("yyyy-MM-dd") + "'";

        cadena_sql = @"SELECT Sucursal, NombreCompleto, Departamento, SalarioBase, DiasTotales, TDiasTotales, Retroactivo, ComisionVtas, Ajustes, OtrosIngresos, IHSS, Impuesto, Cooperativa, Prestamo, Embargo, Vales, Rap, OtrosDeducciones, Netoapagar FROM Planilla
                         WHERE {0} 
                         order by sucursal";

        //Enviando informacion a la clase de Conexion SQL
        cadena_sql = string.Format(cadena_sql, filtro);
        //Confirmando que el DataTable esta lleno
        if (global.conn.SQLSelectDataTable(cadena_sql, ref dt_datos))
        {
            //Llenando el Grid
            DgvAsis.DataSource = dt_datos;
        }           
    }

Ese es el código del Filtro que tengo para llenar el Grid.

Y el botón de reporte tiene el siguiente código en donde tengo un Crystal creado que se llama Practica en donde se tendría que visualizar los recibos de pago

private void BtnReporte_Click(object sender, EventArgs e)
{
    try
    {
        ReportsAttendance2 Frm = new ReportsAttendance2();
        Practica ReporteJc = new Practica();
        ReporteJc.SetDataSource(dt_datos);
        Frm.crystalReportViewer5.ReportSource = ReporteJc;
        Frm.Show();
    }
    catch (Exception ex)
    {

        MessageBox.Show("Error  " + global.conn.SQLError() +          ex.Message.ToString());
    }
}

El reporte esta en otra pantalla que se llama ReportsAttendance2 y hay un Crystal Report con nombre crystalReportViewer5 al cual le estoy enviando la información pero me da el error:

object reference not set to an instance of an object

alguna ayuda?

Desde ya muchas gracias Saludos

Pikoh
  • 17,305
  • 9
  • 38
  • 54
  • El error parece bastante evidente. Muy probablemente, `crystalReportViewer5` es nulo ya que no lo inicializas en el constructor de `ReportsAttendance2, prueba a añadir algo como `Frm.crystalReportViewer5 = new ..` antes de intentar acceder. Te recomiendo tambien que eches un vistazo a [¿Qué es una NullReferenceException y cómo solucionarla?](https://es.stackoverflow.com/q/75999/) – Pikoh Dec 15 '17 at 12:45

0 Answers0