0

tengo un metodo para obtener el empleado que mas ventas ha realizado, el metodo funciona correctamente, siempre y cuando tengo ventas registradas, pero si mi tabla de ventas esta vacia el metodo me arroja error, como puedo arreglarlo?

El error es:

System.NullReferenceException: 'Referencia de objeto no establecida en una instancia de un objeto.'

porque la variable la cual recibe el valor de mi consulta, en este caso "empleadonombre" es igual a NULL

Este es mi metodo

 private void Topempleados()
    {
        
        using (SqlConnection cn = Claseconexion.ObtenerConexion())
        {

            cn.Open();
            cmd = new SqlCommand("SP_DASHBOARDTOPMANT", cn);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add(new SqlParameter("@Operacion", SqlDbType.Int));
            cmd.Parameters["@Operacion"].Value = 4;

            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                empleadonombre = dr.GetString(0); > aqui es donde me arroja el error

            }
            lblempleadotop.Text = empleadonombre.ToString();
            dr.Close();
            cn.Close();
        }

    }

Como le puedo hacer para que cuando la tabla de ventas no tengas registros el label me muestre un texto por default?

gracias de antemano,

1 Answers1

1

Puedes utilizar la propiedad HasRows del objeto dataReader. La misma devuelve true si SqlDataReader contiene una o varias filas. En caso contrario, false.

private void Topempleados()
{
    
    using (SqlConnection cn = Claseconexion.ObtenerConexion())
    {

        cn.Open();
        cmd = new SqlCommand("SP_DASHBOARDTOPMANT", cn);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add(new SqlParameter("@Operacion", SqlDbType.Int));
        cmd.Parameters["@Operacion"].Value = 4;

        dr = cmd.ExecuteReader();
        if (dr.HasRows)
        {
            while (dr.Read())
            {
            
                 empleadonombre = dr.GetString(0); 
            
            }
        }
        else
        {
            empleadonombre = "default"; 
        }
        lblempleadotop.Text = empleadonombre.ToString();
        dr.Close();
        cn.Close();
    }


}

DataReader

Javi fer2
  • 5,210
  • 6
  • 10
  • 24