none
NO HAY NINGUNA FILA EN LA POSICIÓN 0 RRS feed

  • Pregunta

  • Buenos días. 

    Les pido ayuda :/ lo que pasa es que tengo que hacer una consulta de productos (visual studio 2008) y para ello deben cargar los datos en las textbox de los productos que tengo en sql server, pero al ingresar cierto código me aparece que no hay ninguna fila en la posición 0 y no aparece los datos de sql. 

    este es el código 

     Clase_productos ObjetoProducto = new Clase_productos();

    private void button_ver_Click(object sender, EventArgs e)
            {
                DataTable Codigo_Producto = new DataTable();
                try
                {
                    ObjetoProducto.Codigo_producto1 = int.Parse(this.text_Codigopro.Text);
                    Codigo_Producto = ObjetoProducto.Consultar_producto(ObjetoProducto.Codigo_producto1);
                    text_nombrepro.Text = Codigo_Producto.Rows[0]["Nombre_producto"].ToString();
                    text_existenciaspro.Text = Codigo_Producto.Rows[0]["Existencias_inventario_producto"].ToString();
                    text_valorunipro.Text = Codigo_Producto.Rows[0]["Valor_unidad_producto"].ToString();
               }
                catch (Exception ex)
                {
                    MessageBox.Show("Error:" + ex);
                }

    Por favor les pido de su colaboración. 

    Muchas gracias. 

    jueves, 4 de agosto de 2016 13:50

Todas las respuestas

  • Hola Andrea


    Si ObjetoProducto.Consultar_producto(#) devuelve una fila como objeto, entonces debes acceder:

    text_nombrepro.Text = Codigo_Producto["Nombre_producto"].ToString()

    Prueba el código siguiente:

    Clase_productos ObjetoProducto = new Clase_productos();
    
    private void button_ver_Click(object sender, EventArgs e)
            {
                DataRow Codigo_Producto;
                try
                {
          
                    Codigo_Producto = ObjetoProducto.Consultar_producto(int.Parse(this.text_Codigopro.Text));
                    text_nombrepro.Text = Codigo_Producto["Nombre_producto"].ToString();
                    text_existenciaspro.Text = Codigo_Producto["Existencias_inventario_producto"].ToString();
                    text_valorunipro.Text = Codigo_Producto["Valor_unidad_producto"].ToString();
               }
                catch (Exception ex)
                {
                    MessageBox.Show("Error:" + ex);
                }

    Pruébalo

    Si te ha servido vota y marca como respuesta útil. De lo contrario, favor informarnos.


    Miguel Torres









    jueves, 4 de agosto de 2016 14:24
  • Andrea San,

    La primera recomendación es que no definas instancias de clase fuera del ámbito necesario. Por otro lado, la excepción que recibes -imagino del tipo 'System.IndexOutOfRangeException'- se da porque el método Consultar_producto() no retorna filas, para ello es prudente validar la existencia de filas antes de intentar recuperar datos:

    DataTable Codigo_Producto = new DataTable();
    try
    {
    	ObjetoProducto.Codigo_producto1 = int.Parse(this.text_Codigopro.Text);
    	
    	Codigo_Producto = ObjetoProducto.Consultar_producto(ObjetoProducto.Codigo_producto1);
    	
    	if (Codigo_Producto.Rows.Count > 0) /*Validar por la existencia de filas*/
    	{
    		text_nombrepro.Text = Codigo_Producto.Rows[0]["Nombre_producto"].ToString();
    		text_existenciaspro.Text = Codigo_Producto.Rows[0]["Existencias_inventario_producto"].ToString();
    		text_valorunipro.Text = Codigo_Producto.Rows[0]["Valor_unidad_producto"].ToString();
    	}	
    }

    Finalmente, si éstas segura que el código que ingresas debería intersectar con alguna fila y retornar valores entonces te sugiero revisar el método Consultar_producto(), es probable que en algo estés equivocando. 


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 4 de agosto de 2016 14:44
  • Intenta esto

     Clase_productos ObjetoProducto = new Clase_productos();
    
    private void button_ver_Click(object sender, EventArgs e)
            {
                DataTable Codigo_Producto = new DataTable();
                try
                {
                if (ObjetoProducto.Rows.Count >0)
                {
                    ObjetoProducto.Codigo_producto1 = int.Parse(this.text_Codigopro.Text);
                    Codigo_Producto = ObjetoProducto.Consultar_producto(ObjetoProducto.Codigo_producto1);
                    text_nombrepro.Text = Codigo_Producto.Rows[0]["Nombre_producto"].ToString();
                    text_existenciaspro.Text = Codigo_Producto.Rows[0]["Existencias_inventario_producto"].ToString();
                    text_valorunipro.Text = Codigo_Producto.Rows[0]["Valor_unidad_producto"].ToString();
               }
               }
                catch (Exception ex)
                {
                    MessageBox.Show("Error:" + ex);
                }


    Jhonatan Plata http://kayprogramacion.blogspot.com/

    jueves, 4 de agosto de 2016 16:08