2012-07-29 11 views
6

Mam denormalizowane dane w DataTable.Jak przekonwertować obiekt datatable na powiązany zestaw danych?

Dane zawierają nazwiska pracowników i wynagrodzenie, które otrzymali w ciągu cyklu wypłat. tj .:

My DataTable zawiera:

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 

Jak można załadować te dane do DataSet gdzie rodzic DataTable zawiera nazwę pracowników, a dziecko DataTable zawiera szczegóły dotyczące wypłaty?

+0

Twoje pytanie nie jest na tyle specyficzny, dlatego dostajesz odpowiedź poniżej. Jeśli podasz przykłady tego, jak chcesz wyglądać elementy "rodzica" i "dziecka", być może inne osoby mogą udzielić odpowiedzi, której oczekujesz. –

Odpowiedz

11

DataSet to tylko zbiór DataTables. Więc do „obciążenie” DataTable do DataSet proste Dodaj go:

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

Chcesz „połączyć” DataTables jakoś? Uzyskaj wypłaty dla każdego pracownika?

+0

Nie jestem pewien, jak to, co mówisz, ma jakiekolwiek znaczenie dla tego, o co pytam. – MillinMo

+1

@MillinMo - może nie jesteśmy pewni, o co prosisz. –

+0

Dokładnie tak, jak stwierdził @Henk, nie zadawałeś żadnego tak dokładnego pytania, jak na przykład, jak utworzyć relację między datatables lub coś podobnego. Proszę, idź dalej i zapytaj go. –

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

Nie jestem pewien, jak to, co mówisz, ma jakiekolwiek znaczenie dla tego, o co pytam. – MillinMo

+0

cześć, spróbuj go. Załaduj dane na 2 datatable i ustal relację pomiędzy datatable parent (employee) a datatable child (payment) –

+0

na pewno jeśli twoje dane pochodzą z serwera sql, nie musisz wstawiać danych ręcznie –

3

kodu bez ręcznego wkładki:

 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

dla dcIdemploye musisz powiązać tę kolumnę z poprawną kolumną nadrzędną, która jest dcIdemploye = dtemploye.Columns ["ID_EMPLOYEE"] –

Powiązane problemy