Crear y copiar DataTables
Publicado por Eleazar (19 intervenciones) el 08/02/2008 20:51:25
Tengo 3 DataTables, dos de los cuales se llenan con Querys desde la BD y la tercer que utilizo para converger los datos de las 2 primeras.
Mi duda es como puedo copiar una columna de un Datatable a otro sin tener que hacer iteración por cada fila.
Por el momento esto es lo que tengo:
DataTable tblaLims = new DataTable();
DataTable tbla1 = new DataTable();
DataTable tbla2 = new DataTable();
ICollection CreateDataSource()
{
tblaLims.Columns.Add(new DataColumn("Mes", typeof(string)));
tblaLims.Rows.Add("Enero");
tblaLims.Rows.Add("Febrero");
tblaLims.Rows.Add("Marzo");
tblaLims.Rows.Add("Abril");
tblaLims.Rows.Add("Mayo");
tblaLims.Rows.Add("Junio");
tblaLims.Rows.Add("Julio");
tblaLims.Rows.Add("Agosto");
tblaLims.Rows.Add("Septiembre");
tblaLims.Rows.Add("Octubre");
tblaLims.Rows.Add("Noviembre");
tblaLims.Rows.Add("Diciembre");
tblaLims.Columns.Add(tbla1.Columns[1]);
tblaLims.Columns.Add(tbla2.Columns[1]);
dvL = new DataView(tblaLims);
return dvL;
}
Si ejecuto la pagina tal como esta el explorer me da un mensaje que dice :
La columna 'RECIBIDOS' ya pertenece a otra DataTable.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.ArgumentException: La columna 'RECIBIDOS' ya pertenece a otra DataTable.
Tambien intente con tblaLims.Columns.Add(tbla2.Columns[1].ToString()); y ahi me compila, sin embargo en la tabla no me aparecen los datos por lo que no creo que haya copiado la columna.
PD: Las 2 primeras tablas tienen 2 columnas y quiero copiar la 2º columna de cada tabla.
Es decir:
Tabla 1 Tabla 2 Tabla3
01 1234 01 2345 ==> "Enero" 1234 2345
02 5678 02 6789 ==> "Febrero" 5678 6789
PD2: se preguntarán porque no hago eso usando un única Query. Ya lo hice pero el hacerlo toma demasiado tiempo tanto que el explorador da error de timeout y además la Query exige tanto al servidor que ya me llego el reto diciendo que no puedo hacer eso porque el server se congela mientras se resuelve la Query.
Mi duda es como puedo copiar una columna de un Datatable a otro sin tener que hacer iteración por cada fila.
Por el momento esto es lo que tengo:
DataTable tblaLims = new DataTable();
DataTable tbla1 = new DataTable();
DataTable tbla2 = new DataTable();
ICollection CreateDataSource()
{
tblaLims.Columns.Add(new DataColumn("Mes", typeof(string)));
tblaLims.Rows.Add("Enero");
tblaLims.Rows.Add("Febrero");
tblaLims.Rows.Add("Marzo");
tblaLims.Rows.Add("Abril");
tblaLims.Rows.Add("Mayo");
tblaLims.Rows.Add("Junio");
tblaLims.Rows.Add("Julio");
tblaLims.Rows.Add("Agosto");
tblaLims.Rows.Add("Septiembre");
tblaLims.Rows.Add("Octubre");
tblaLims.Rows.Add("Noviembre");
tblaLims.Rows.Add("Diciembre");
tblaLims.Columns.Add(tbla1.Columns[1]);
tblaLims.Columns.Add(tbla2.Columns[1]);
dvL = new DataView(tblaLims);
return dvL;
}
Si ejecuto la pagina tal como esta el explorer me da un mensaje que dice :
La columna 'RECIBIDOS' ya pertenece a otra DataTable.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.ArgumentException: La columna 'RECIBIDOS' ya pertenece a otra DataTable.
Tambien intente con tblaLims.Columns.Add(tbla2.Columns[1].ToString()); y ahi me compila, sin embargo en la tabla no me aparecen los datos por lo que no creo que haya copiado la columna.
PD: Las 2 primeras tablas tienen 2 columnas y quiero copiar la 2º columna de cada tabla.
Es decir:
Tabla 1 Tabla 2 Tabla3
01 1234 01 2345 ==> "Enero" 1234 2345
02 5678 02 6789 ==> "Febrero" 5678 6789
PD2: se preguntarán porque no hago eso usando un única Query. Ya lo hice pero el hacerlo toma demasiado tiempo tanto que el explorador da error de timeout y además la Query exige tanto al servidor que ya me llego el reto diciendo que no puedo hacer eso porque el server se congela mientras se resuelve la Query.
Valora esta pregunta


0