2012-07-29 12 views
6

Tengo datos desnormalizados en una tabla de datos.Cómo puedo convertir una tabla de datos a un conjunto de datos relacionado

Los datos contienen los nombres de los empleados y la paga que obtuvieron durante una serie de ciclos de pago. es decir .:

Mi DataTable contiene:

Employee 1   Jan-1-2012   $100 
Employee 2   Jan-1-2012   $300 
Employee 1   Feb-1-2012   $400 
Employee 2   Feb-1-2012   $200 
Employee 1   Mar-1-2012   $150 
Employee 2   Mar-1-2012   $325 

¿Cómo se puede cargar estos datos en un conjunto de datos donde el DataTable matriz contiene el nombre de los empleados, y el niño DataTable contiene detalles del cheque de pago?

+0

Su pregunta no es lo suficientemente específico, es por eso que está recibiendo las respuestas a continuación. Si proporciona ejemplos de cómo quiere que se vean las tablas de datos "padre" e "hijo", entonces quizás otras personas puedan dar la respuesta que está esperando. –

Respuesta

11

DataSet no es más que una colección de DataTables. Así que para "cargar" la dataTable en dataSet sencilla Añádelo:

 DataTable employees = new DataTable(); 
     DataTable payCheckes = new DataTable(); 
     DataSet ds = new DataSet(); 
     ds.Tables.Add(employees); 
     ds.Tables.Add(payCheckes); 

¿Quieres "combinar" tablas de datos de alguna manera? ¿Recibe los cheques de cada empleado?

+0

No estoy seguro de cómo lo que dices tiene relevancia para lo que estoy preguntando. – MillinMo

+1

@MillinMo - tal vez no estamos seguros de lo que estás preguntando. –

+0

Exactamente como @Henk declaró, usted no hizo ninguna pregunta exacta, como la de crear una relación entre tablas de datos, o algo similar. Por favor, adelante y pregúntelo. –

1
 DataSet ds = new DataSet(); 
     DataTable dtemploye = new DataTable(); 
     DataColumn dcnameemploye = new DataColumn(); 
     DataColumn dcIdemploye = new DataColumn(); 
     dtemploye.Columns.AddRange(new DataColumn[]{dcnameemploye,dcIdemploye}); 

     DataTable dtpayment = new DataTable(); 
     DataColumn dtprice = new DataColumn(); 
     DataColumn dtDate = new DataColumn(); 
     DataColumn dcIdemployeprice = new DataColumn(); 
     dtpayment.Columns.AddRange(new DataColumn[]{dcIdemployeprice,dtprice,dtDate}); 

     DataRow drrowemploy = dtemploye.NewRow(); 
     drrowemploy[0] = "1"; 
     drrowemploy[1] = "Employee 1"; 
     dtemploye.Rows.Add(drrowemploy); 

     DataRow drrowpayment = dtpayment.NewRow(); 
     drrowpayment[0] = "1"; 
     drrowpayment[0] = "01/01/2012"; 
     drrowpayment[1] = " 300"; 


     ds.Tables.AddRange(new DataTable[]{dtemploye, dtpayment}); 

     DataRelation drrelation = new DataRelation("relemploy_payment", dcIdemploye, dcIdemployeprice); 
     ds.Relations.Add(drrelation); 
+0

No estoy seguro de cómo lo que dices tiene relevancia para lo que estoy preguntando. – MillinMo

+0

hola, intente it.it cargar datos en 2 datatable y establecer una relación entre datatable parent (employee) y datatable child (pago) –

+0

para asegurarse de que si sus datos provienen del servidor sql no tiene que insertar datos manualmente –

3

el código sin suministro manual:

 DataSet ds = new DataSet(); 
     DataTable dtemploye = new DataTable(); 
     DataTable dtpayment = new DataTable(); 

     ds.Tables.AddRange(new DataTable[] { dtemploye, dtpayment }); 
     DataColumn dcIdemploye = dtemploye.Columns["ID_EMPLOYEE"]; 
     DataColumn dcIdemployeprice = dtpayment.Columns["ID_EMPLOYEE"]; 
     DataRelation drrelation = new DataRelation("relemploy_payment", dcIdemploye, dcIdemployeprice); 
     ds.Relations.Add(drrelation); 
+0

para dcIdemploye debe vincular esta columna a la columna principal correcta que es dcIdemploye = dtemploye.Columns ["ID_EMPLOYEE"] –

Cuestiones relacionadas