Usuario
"Referencia a objeto no establecida como instancia de un objeto".

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
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
-
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