2012-07-29 13 views
6

Ho dati denormalizzati in un DataTable.Come convertire un datatable in un set di dati correlato

I dati contengono i nomi degli impiegati e la retribuzione che hanno ricevuto in una serie di cicli di pagamento. cioè .:

mio 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 

Come può caricare questi dati in un DataSet in cui il genitore DataTable contiene il nome dipendenti, e il bambino DataTable contiene i dettagli della busta paga?

+0

tua domanda non è abbastanza specifico, è per questo che stai ricevendo le risposte di seguito. Se fornisci esempi di come vuoi che siano visualizzati i dati "genitore" e "figlio", allora forse altre persone possono dare la risposta che ti aspetti. –

risposta

11

DataSet non è altro che una raccolta di DataTable. Quindi, per "caricare" il DataTable in dataSet semplice Aggiungilo:

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

Vuoi "combine" DataTable in qualche modo? Ottieni gli assegni di ogni dipendente?

+0

Non sono sicuro di come ciò che stai dicendo abbia rilevanza per ciò che sto chiedendo. – MillinMo

+1

@MillinMo - forse non siamo sicuri di cosa stai chiedendo. –

+0

Esattamente come ha affermato @Henk, non hai mai fatto una domanda così esatta, ad esempio come creare una relazione tra i datatables o qualcosa di simile. Per favore, vai avanti e chiedilo. –

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

Non sono sicuro di come ciò che stai dicendo abbia rilevanza per ciò che sto chiedendo. – MillinMo

+0

ciao, prova it.it carica i dati su 2 datatable e stabilisce una relazione tra genitore databile (dipendente) e datatable child (pagamento) –

+0

di sicuro se i tuoi dati provengono da sql server non devi inserire manualmente i dati –

3

il codice senza introduzione manuale:

 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

per dcIdemploye è necessario associare questa colonna alla colonna padre corretta che è dcIdemploye = dtemploye.Columns ["ID_EMPLOYEE"] –

Problemi correlati