Foros del Web » Programación para mayores de 30 ;) » .NET »

indice del datarow sea nombre del campo

Estas en el tema de indice del datarow sea nombre del campo en el foro de .NET en Foros del Web. Estimados: Cómo hago para tomar el valor de un datarow a través del nombre del campo en lugar del índice? c.id= (int)row["id"] en lugar de ...
  #1 (permalink)  
Antiguo 02/11/2011, 10:17
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 20 años, 7 meses
Puntos: 2
indice del datarow sea nombre del campo

Estimados:

Cómo hago para tomar el valor de un datarow a través del nombre del campo en lugar del índice?
c.id= (int)row["id"]

en lugar de :
c.id = (int)row[0];


así tomo el dataset:
Código:
Database myDatabase = DatabaseFactory.CreateDatabase();
			DbCommand myCommand = myDatabase.GetStoredProcCommand("FacturasProveedoresSelectAll");

			DataSet ds= myDatabase.ExecuteDataSet(myCommand);

            List<FacturaProveedor> _lista= new List<FacturaProveedor>();
               FacturaProveedor fc;

                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    fc = new FacturaProveedor();
                    fc.numeroFactura
                    c.id = (int)row[0];
                    c.fecha = Convert.ToDateTime(row[1]);
}}
                    c.razonSocial = row[2].ToString

Muchas gracias desde ya
  #2 (permalink)  
Antiguo 02/11/2011, 10:42
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: indice del datarow sea nombre del campo

Hola moron, asi como muestras está correcto :
Código C#:
Ver original
  1. c.id= (int)row["id"];
de esa manera se le llama a la celda de una fila por su nombre de campo de resultado. Qué problema te genera?
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 02/11/2011, 11:59
Avatar de 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

Muchas Gracias Aquaventus.
Era demasiado simple, por eso me compliqué demasiado. :).
Pensaba que había que invocar al dataset de otra manera para accederlo de esa forma.

Código:
 Database myDatabase = DatabaseFactory.CreateDatabase("cnn");
            DbCommand myCommand = myDatabase.GetStoredProcCommand("FacturasProveedoresSelectAll");
           
          
            DataSet ds = myDatabase.ExecuteDataSet(myCommand);

            List<FacturaProveedor> _lista = new List<FacturaProveedor>();
            FacturaProveedor fc;

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                fc = new FacturaProveedor();
                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"];
                
// para cada linea de factura agregar a la lista
 
            }

            return _lista;
        }
Podrías por favor indicarme, cual es la forma correcta de traer los datos de la línea de factura? debo crear una nueva conección por cada bucle del foreach que llame al sp_LineaFacturaProveedorSelecByID ?
  #4 (permalink)  
Antiguo 02/11/2011, 12:04
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: indice del datarow sea nombre del campo

Moron esperame que regreso en 1 hora . Me olvidé de mi hora de refrigerio jajaja(ando en el trabajo)
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 02/11/2011, 12:15
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 5 meses
Puntos: 267
Respuesta: indice del datarow sea nombre del campo

fc qué es? y tu List<FacturaProveedor> _lista = new List<FacturaProveedor>(); como está compuesta?
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #6 (permalink)  
Antiguo 02/11/2011, 13:41
Avatar de 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;
        }

Etiquetas: indice, nombre, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:10.