none
"Referencia a objeto no establecida como instancia de un objeto". RRS feed

  • Pregunta

  • Buen dia

    Soy nuevo en .NET y estoy desarrollando una aplicacion que permita asociar empleados a un grupo, ejemplo grupo mensajeros, he creado un viewstate que me contiene la consulta de los empleados activos y la consulta de empleados por grupo y las imprimo en un gridview, pero me esta retornando este error "Referencia a objeto no establecida como instancia de un objeto".

    Este es el codigo que me genera lo que les acabo de mencionar

    protected void btnBuscar_Click(object sender, EventArgs e)
            {
                try
                {
                    el.clsEmpleados obclsEmpleados = new el.clsEmpleados();
                    el.clsGeneral obclsGeneral = new el.clsGeneral();
                    DataSet dsConsulta = obclsEmpleados.dsConsultarEmpleadosGrupos(ConfigurationManager.ConnectionStrings["Cnx"].ToString(),
                                                                         -1,
                                                                         ""
                                                                          );
                                                                        
                    ViewState["dtConsulta"] = dsConsulta.Tables[1];

                    if (dsConsulta.Tables[0].Rows.Count > 0) obclsGeneral.LlenarGrid(ref gvwDatos, dsConsulta.Tables[0], ref lblNoRegistros);
                    else obclsGeneral.DescargarGrid(ref gvwDatos, ref lblNoRegistros);
                    if (dsConsulta.Tables[1].Rows.Count > 0) obclsGeneral.LlenarGrid(ref gvEmpleAsig, dsConsulta.Tables[1], ref lblNoRegistros);
                    else obclsGeneral.DescargarGrid(ref gvEmpleAsig, ref lblNoRegistros);
                }

                catch (Exception ex)
                {
                    el.clsJavas obclsJavas = new el.clsJavas();
                    obclsJavas.MostrarMensaje(uplMensaje, GetType(), ex.Message);
                }
            }

    y este es el sp que utilizo para retornar los datos

    ALTER   procedure [dbo].[spConsultaEmpleadosAsigancion]
    @nCodigo int,
    @cNombres varchar(50)


    AS
    Set NoCount On

    --consulta Empleados Activos
    select emp.emplId,
    emp.emplNombres,
    emp.emplApellidos,
    emp.cargCodigo,
    carg.cargDescripcion,
    emp.emplFechaIngreso,
    esta.estaDescripcion,
    emp.emplFechaCreacion
    from tbEmpleados as emp
    inner join tbCargos as carg on  emp.cargCodigo = carg.cargCodigo
    inner join tbEstados as esta on emp.estaCodigo = esta.estaCodigo

    where (emplId = @nCodigo or @nCodigo = -1)
    and (lower(emp.emplNombres) like lower(@cNombres) +'%' or @cNombres = '')



    ---consulta Empleados grupos---
    select  
    grup.emplId
     from tbEmpleados as emp
    inner join tbGruposEmpleados as grup on (emp.emplId = grup.emplId)

    Agradezco si me pueden ayudar encontrando el porque no se ejecuta como deberia hacerse ya que no se que mas hacer, he seguido codigo con breackpoints pero no logro identificar el por que?.

    Saludos cordiales

    lunes, 24 de noviembre de 2014 15:32

Todas las respuestas

  • Hola:

     Podrías comentar en que linea de código estas recibiendo el error, cuando ocurre una excepción Visual Studio en automático te envía a la linea de código que la provoco, esto en caso de que no lo tengas controlado con un Try catch.., en caso contrario por favor sigue la ejecución del código con la tecla F11 hasta que ocurra esta y nos mencionas en donde fue que ocurre.

     Te anticipo que el error que estas recibiendo proviene del uso de un objeto que no esta instanciado, bien podría ser esta linea:

    DataSet dsConsulta = obclsEmpleados.dsConsultarEmpleadosGrupos(ConfigurationManager.ConnectionStrings["Cnx"].ToString(),

     Veo que no esta instanciada y pero se toma como un hecho que el objeto obclsEmpleados devolverá un DataSet

     Intenta con estas lineas de código:

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        try
        {
            el.clsEmpleados obclsEmpleados = new el.clsEmpleados();
            el.clsGeneral obclsGeneral = new el.clsGeneral();
            DataSet dsConsulta = obclsEmpleados.dsConsultarEmpleadosGrupos(ConfigurationManager.ConnectionStrings["Cnx"].ToString(),
                                                                 -1,
                                                                 ""
                                                                  );
            if(dsConsulta != null)
    		{		
    			ViewState["dtConsulta"] = dsConsulta.Tables[1];
    	
    			if (dsConsulta.Tables[0].Rows.Count > 0) obclsGeneral.LlenarGrid(ref gvwDatos, dsConsulta.Tables[0], ref lblNoRegistros);
    			else obclsGeneral.DescargarGrid(ref gvwDatos, ref lblNoRegistros);
    			if (dsConsulta.Tables[1].Rows.Count > 0) obclsGeneral.LlenarGrid(ref gvEmpleAsig, dsConsulta.Tables[1], ref lblNoRegistros);
    			else obclsGeneral.DescargarGrid(ref gvEmpleAsig, ref lblNoRegistros);
    		}
        }
        catch (Exception ex)
        {
            el.clsJavas obclsJavas = new el.clsJavas();
            obclsJavas.MostrarMensaje(uplMensaje, GetType(), ex.Message);
        }
    }

    Ahí estas preguntando si el objeto mencionado es diferente de Nulo entonces continua si no no entra a preguntar por el DataTable...

    Misma validación podrías hacer con el DataTable que deseas utilizar.


    Saludos desde Monterrey, Nuevo León, México!!!

    • Propuesto como respuesta JoséLuisGarcía martes, 25 de noviembre de 2014 21:29
    lunes, 24 de noviembre de 2014 16:10
  • Buena tarde Luis Escobar

    Te cuento que ya pude solucionar el inconveniente que tenia, utlice el codigo que me enviaste y me sirvio, aunque el error no estaba precisamente ahí, resulta que en el formulario web tenia un <input type="CheckBox" id=""> propio de html y no de asp, cuando utlice el input propio de asp<asp:CheckBox ID="chkSeleccion" runat="server" /> me dejo de mostrar el error.

    De igual forma te agradezco mucho la colaboración, ya que esa validacion no la tenia y me es muy util para lo que deseo hacer.


    Saludos cordiales,

    David Alejandro Garcia Caceres

    Cali, Colombia



    • Propuesto como respuesta Sergio Parra lunes, 24 de noviembre de 2014 20:55
    lunes, 24 de noviembre de 2014 20:20