none
Error al buscar RRS feed

  • Pregunta

  • Hola todos

    Miren es que tengo este problema con esta busqueda que hago a la base de datos sql server

    el codigo es este

     public List<Repuestos> ConsultarNombre(string nom)
            {
                List<Repuestos> lis = new List<Repuestos>();

                using (c.cmd = new SqlCommand())
                {
                    query = "Select CodigoPro,NombreApli, NombrePro, Cantidad, Sin_iva, Precio, FechaIngreso, FechaSalida, NombreCli, NumeroFac From Productos where NombrePro like '%" + nom + "%'";
                    c.cmd.Connection = c.con;
                    c.cmd.CommandText = query;
                    c.cmd.ExecuteNonQuery();

                    c.dr = c.cmd.ExecuteReader();

                    while (c.dr.Read())
                    {
                        Repuestos re = new Repuestos();
                        re.Codigo = c.dr.GetString(0);
                        re.Aplicacion = c.dr.GetString(1);
                        re.NombrePro = c.dr.GetString(2);
                        re.Cantidad = c.dr.GetString(3);
                        re.NetoIva = c.dr.GetString(4);
                        re.Precio = c.dr.GetString(5);
                        re.FechaIngreso = c.dr.GetString(6);
                        re.FechaSalida = c.dr.GetString(7);
                        re.NombreCli = c.dr.GetString(8);
                        re.NumeroFac = c.dr.GetString(9);

                        lis.Add(re);
                    }
                }
                c.con.Close();
                return lis;
            }

    y al hacer la busqueda mee 

    arroja este error

    Excepción no controlada del tipo 'System.Data.SqlTypes.SqlNullValueException' en System.Data.dll

    Información adicional: Los datos tienen valor Null. No se puede llamar a este método o propiedad con valores Null

    y pruebo la consulta y esta bien

    espero que me puedan ayudar se los agradeceria 

    gracias

    saludos

    sábado, 31 de enero de 2015 17:00

Respuestas

  • Hola Juan,

    Primero, ¿haces uso de ExecuteNonQuery y luego ExecuteReader? Eso no lo veo correcto

    public List<Repuestos> ConsultarNombre(string nom)
    {
    	List<Repuestos> lis = new List<Repuestos>();
    
    	using (c.cmd = new SqlCommand())
    	{
    		query = "Select CodigoPro,NombreApli, NombrePro, Cantidad, Sin_iva, Precio, FechaIngreso, FechaSalida, NombreCli, NumeroFac From Productos where NombrePro like '%" + nom + "%'";
    		c.cmd.Connection = c.con;
    		c.cmd.CommandText = query;
    		
    		SqlDataReader c.dr = c.cmd.ExecuteReader()				
    		
    		while (c.dr.Read())
    		{
    			Repuestos re = new Repuestos();
    			
    			re.Codigo = c.dr.GetString(0);
    			re.Aplicacion = c.dr.GetString(1);
    			re.NombrePro = c.dr.GetString(2);
    			re.Cantidad = c.dr.GetString(3);
    			re.NetoIva = c.dr.GetString(4);
    			re.Precio = c.dr.GetString(5);
    			re.FechaIngreso = c.dr.GetString(6);
    			re.FechaSalida = c.dr.GetString(7);
    			re.NombreCli = c.dr.GetString(8);
    			re.NumeroFac = c.dr.GetString(9);
    
    			lis.Add(re);
    		}
    	}
    	c.con.Close();
    	return lis;
    }


    Segundo, es probable que la propiedad FechaSalida del tipo Repuestos no sea opcional. Deberás revisar como tienes definido el tipo Repuestos.

    ...
    public Nullable<DateTime> FechaSalida { get; set; }
    ...

    Tercero, todas las asignaciones utilizas GetString. ¿Todas las propiedades del tipo Repuestos son string?

    Coméntanos como te fue.

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.


    Willams Morales P.
    Arequipa - Perú


    sábado, 31 de enero de 2015 17:17

Todas las respuestas

  • este error me sale al rededor de esta linea de codigo

    re.FechaSalida = c.dr.GetString(7);

    sábado, 31 de enero de 2015 17:02
  • Hola Juan,

    Primero, ¿haces uso de ExecuteNonQuery y luego ExecuteReader? Eso no lo veo correcto

    public List<Repuestos> ConsultarNombre(string nom)
    {
    	List<Repuestos> lis = new List<Repuestos>();
    
    	using (c.cmd = new SqlCommand())
    	{
    		query = "Select CodigoPro,NombreApli, NombrePro, Cantidad, Sin_iva, Precio, FechaIngreso, FechaSalida, NombreCli, NumeroFac From Productos where NombrePro like '%" + nom + "%'";
    		c.cmd.Connection = c.con;
    		c.cmd.CommandText = query;
    		
    		SqlDataReader c.dr = c.cmd.ExecuteReader()				
    		
    		while (c.dr.Read())
    		{
    			Repuestos re = new Repuestos();
    			
    			re.Codigo = c.dr.GetString(0);
    			re.Aplicacion = c.dr.GetString(1);
    			re.NombrePro = c.dr.GetString(2);
    			re.Cantidad = c.dr.GetString(3);
    			re.NetoIva = c.dr.GetString(4);
    			re.Precio = c.dr.GetString(5);
    			re.FechaIngreso = c.dr.GetString(6);
    			re.FechaSalida = c.dr.GetString(7);
    			re.NombreCli = c.dr.GetString(8);
    			re.NumeroFac = c.dr.GetString(9);
    
    			lis.Add(re);
    		}
    	}
    	c.con.Close();
    	return lis;
    }


    Segundo, es probable que la propiedad FechaSalida del tipo Repuestos no sea opcional. Deberás revisar como tienes definido el tipo Repuestos.

    ...
    public Nullable<DateTime> FechaSalida { get; set; }
    ...

    Tercero, todas las asignaciones utilizas GetString. ¿Todas las propiedades del tipo Repuestos son string?

    Coméntanos como te fue.

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.


    Willams Morales P.
    Arequipa - Perú


    sábado, 31 de enero de 2015 17:17