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

Asignar filas (DataRows) a un DataSet

Estas en el tema de Asignar filas (DataRows) a un DataSet en el foro de .NET en Foros del Web. Buenas, ¿Alguien sabe como editar un DataSet asignarle nuevos registros (filas)? (C# - V. Studio 2005). Por ejemplo, tengo un DataSet que devuelve 100 registros, ...
  #1 (permalink)  
Antiguo 23/11/2009, 11:10
 
Fecha de Ingreso: agosto-2009
Mensajes: 104
Antigüedad: 14 años, 9 meses
Puntos: 1
Asignar filas (DataRows) a un DataSet

Buenas,

¿Alguien sabe como editar un DataSet asignarle nuevos registros (filas)? (C# - V. Studio 2005).
Por ejemplo, tengo un DataSet que devuelve 100 registros, y tras pasarle un Filtro (.Filter) me devuelve un array de 20 registros (Rows). ¿Como puedo hacer para asignarle los Rows al DataSet (y que pase de tener 100 registros a los 20 devueltos por el filtro)?

En resumen, mi problema es que no soy capaz de asignar filas a un DataSet (sea el DataSet al que aplico el Filtro, o bien un nuevo DataSet). ¿Alguien sabe como asignar filas (DataRows) a un DataSet?

Lo estoy intentando de la siguiente forma, pero me da error:
-------------------------------------------------------

DataRow[] filas;
filas = MiDataSet.Tables[0].Select("Importe > 100");

MiDataSet.tbFacturas.Clear();

foreach (DataRow row in filas)
{
MiDataSet.tbFacturas.NewRow();
MiDataSet.tbFacturas.Rows.Add(row);
}

-------------------------------------------------------


Muchas gracias.

Un saludo.
  #2 (permalink)  
Antiguo 23/11/2009, 12:43
 
Fecha de Ingreso: septiembre-2009
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Asignar filas (DataRows) a un DataSet

Cita:
Iniciado por noegano Ver Mensaje
Buenas,...


Lo estoy intentando de la siguiente forma, pero me da error:
-------------------------------------------------------

DataRow[] filas;
filas = MiDataSet.Tables[0].Select("Importe > 100");

MiDataSet.tbFacturas.Clear();

foreach (DataRow row in filas)
{
MiDataSet.tbFacturas.NewRow();
MiDataSet.tbFacturas.Rows.Add(row);
}

-------------------------------------------------------
...

Saludos.. yo tambien batallé un poco para entender bien como funciona una tabla.. de echo encontré un ejemplo que me sirvió mucho para entenderlo..

Pero en fin.. lo que entiendo es que filas es un conjunto de REGISTROS o Filas en una Tabla mediante un Select no es verdad???

ok.. pero luego Limpias la tabla para que te la vuelva a llenar con la misma información... o.k. REcuerda que cuando tu usas un Filtro como el SELECT en una Tabla.. esta accion Genera una Vista.. ya que la tabla ya está creada.. yo te sugiero algo mas parecido a a esto:

Código CODIGO:
Ver original
  1. //Linea que Clona la ESTRUCTURA de otra tabla creada(Solo Campos)
  2. DataTable dtTablaDestino = Tabla.Clone();
  3.       for (int i = 0; i < Tabla.Clone; i++)
  4.       {
  5.             DataRow fila = dtTablaDestino.NewRow();
  6.             if (int.Parse(Tabla[i]["importe"].toString()) > 100)
  7.             {
  8.                 fila = Tabla[i];
  9.                 dtTablaDestino.Rows.Add(fila);
  10.             }
  11.       }

Espero que te sea de gran Ayuda.. Cualquier Duda ya sabes..

Saludos!! .Atte. yo
__________________
Si caminas por la Senda del Conocimiento... y una Luz en la Oscuridad Ilumina tu Camino... No seas cu#$r@ y compártela.
  #3 (permalink)  
Antiguo 24/11/2009, 10:14
 
Fecha de Ingreso: agosto-2009
Mensajes: 104
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Asignar filas (DataRows) a un DataSet

Hola de nuevo!,

Muchas gracias por tu ayuda. Aunque tengo un problema con este código que has escrito. Por ejemplo, el bucle "for" me da error en "i < Tabla.Clone": "El operador '<' no se puede aplicar a operandos del tipo 'int' y 'grupo de métodos'".

Y tambien me da un error en esta parte del código: "dtTablaDestino.Rows.Add(fila)". El mensaje del error es:
Excepción no controlada del tipo 'System.ArgumentException' en System.Data.dll.
Información adicional: Esta fila ya pertenece a otra tabla.

Por otro lado, yo lo que necesito es modificar el objeto Table de un DataSet. Me imagino que si edito un Datatable, luego podré asignar este a un DataSet facilmente ¿verdad?

Muchas gracias.

Un saludo.
  #4 (permalink)  
Antiguo 24/11/2009, 12:26
 
Fecha de Ingreso: septiembre-2009
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Asignar filas (DataRows) a un DataSet

Cita:
Iniciado por noegano Ver Mensaje
Hola...

Muchas gracias por tu ayuda. Aunque tengo un problema con este código que has escrito. Por ejemplo, el bucle "for" me da error en "i < Tabla.Clone": "El operador '<' no se puede aplicar a operandos del tipo 'int' y 'grupo de métodos'".

Y tambien me da un error en esta parte del código: "dtTablaDestino.Rows.Add(fila)". El mensaje del error es:
Excepción no controlada del tipo 'System.ArgumentException' en System.Data.dll.
Información adicional: Esta fila ya pertenece a otra tabla.
...
O.k. en el bucle con Tabla.Clone fue un Error de Dedo.. en Realidad es Tabla.Rows.Count es que en mi programa Tabla es una Vista y me iba a poner Tabla.Count.. en el El segundo error que te dice que esta ya pertenece a otra tabla.. puedes usar la propiedad de ImportRow en ;ugar de Row.Add te deberia quedar algo así

dtTablaDestino.ImportRow(row)

esto hace que te traslade la Fila que ya se encuentra en una Tabla a una Nueva.. SI lo que deseas es solamente generar una Vista oFila con una Busqueda Especifica puedes tratar usando DataView view/DataRow[] row
Mediante el Select Tabla.Select = "Campo= ' valor'";
__________________
Si caminas por la Senda del Conocimiento... y una Luz en la Oscuridad Ilumina tu Camino... No seas cu#$r@ y compártela.
  #5 (permalink)  
Antiguo 04/12/2009, 01:51
 
Fecha de Ingreso: agosto-2009
Mensajes: 104
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Asignar filas (DataRows) a un DataSet

Mcuchas gracias!
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 06:38.