Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/11/2011, 13:41
Avatar de moron
moron
 
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: indice del datarow sea nombre del campo

Gracias por tu tiempo.

de esta forma lo tengo resuelto. Funciona pero no se es la mejor manera:
Aunque bien dicen por ahíi que si algo no está roto no lo arregles, quisiera buscar la solución mas eficiente.

Código:

  public static List<FacturaProveedor> SelectAll()
        {
            Database myDatabase = DatabaseFactory.CreateDatabase("cnn");
            DbCommand myCommand = myDatabase.GetStoredProcCommand("FacturasProveedoresSelectAll");
           
            //instancio conexión para línea de factura
            Database myDatabase2 = DatabaseFactory.CreateDatabase("cnn");
            DbCommand myCommand2 = myDatabase.GetStoredProcCommand("LineaFacturasProveedoresSelect");
          
            //Ejecuto la conexión que trae facturas
            DataSet ds = myDatabase.ExecuteDataSet(myCommand);
            // declaro el dataset que traerá líneas de factura
            DataSet ds2;
          
            List<FacturaProveedor> _lista = new List<FacturaProveedor>();
            FacturaProveedor fc;
            lineaFacturaProveedor lf;

            //seteo factura y detalles de factura
            foreach (DataRow row in ds2.Tables[0].Rows)
            {
                fc = new FacturaProveedor();
                fc.lineasFactura = new List<lineaFacturaProveedor>();
                fc.numeroFactura = (string)row["NroFactura"];
                fc.fechaFactura = (DateTime)row["FechaFactura"];
                fc.fechaVencimiento = (DateTime)row["FechaVencimiento"];
                fc.idFactura = (int)row["IdFactura"];
                fc.idProveedor = (int)row["CodProveedor"];
                
                myDatabase2.AddInParameter(myCommand2,"@IdFactura",DbType.Int32,(int)row["IdFactura"]);
                ds2 = myDatabase2.ExecuteDataSet(myCommand2);
                
                foreach(DataRow rowLinea in ds.Tables[0].Rows)
                {
                    lf = new lineaFacturaProveedor();
                    lf.cantidad = (int)rowLinea["Cantidad"];
                    lf.facturaProveedor = fc;
                    lf.idProducto = (int)rowLinea["iDProducto"];
                    lf.importe = (float)rowLinea["Importe"];
                    lf.producto = new Producto();
                    lf.producto.id = (int)rowLinea["IDProducto"];
                    lf.producto.Nombre = (string)rowLinea["NombreProducto"];
                    
                    fc.lineasFactura.Add(lf);
                }
                _lista.Add(fc);
                

            }

            return _lista;
        }