台灣最大程式設計社群網站
線上人數
718
 
會員總數:244870
討論主題:188880
歡迎您免費加入會員
討論區列表 >> VB.NET >> 合併DATATABLE
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
合併DATATABLE
價值 : 10 QP  點閱數:276 回應數:4

樓主

小妏子
門外漢
0 107
1211 162
發送站內信

要將以下這兩個datatable的資料,合併成一個資料表

第一個datatable (Atable) 的欄位有3個,分別是:名稱,日期1,人名1

第二個datatable(Btable)的欄位也有3個,分別是:名稱,日期2,人名2

要合併兩個datatable產生第三個資料表

產生的結果為5個欄位的資料表,分別是:名稱,日期1,人名1,日期2,人名2

ATable
名稱 日期1 人名1
A公司 05/01 JOHN
B公司 05/03 Mei
C公司 05/01 Roger

BTable
名稱 日期2 人名2
A公司 05/02 YORK
H公司 05/03 JASON


TargetTable
名稱 日期1 人名1 日期2 人名2
A公司 05/01 JOHN 05/02 YORK
B公司 05/03 Mei None None
C公司 05/01 Roger None None
H公司 None None 05/03 JASON



目前我是 使用 2個DataTable 去做處理…但是在 myDS.Tables("TargetTable").Rows(i).Item(1) = myDS.Tables("ATable").Rows(i).Item(1)會出現"並未將物件參考設定為物件的執行個體"的錯誤???請問哪裡有問題?
另外,目前的程式只寫到把Btable中名稱已存在Atable的資料合併至TargetTable, Btable中名稱未存在Atable的資料(H公司)也要想辦法在寫入TargetTable,有較快的方法?





搜尋相關Tags的文章: [ DATATABLE  ] ,
本篇文章發表於2019-05-28 10:47
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應
最大問題出在這
Dim TargetTable As New DataTable
myDS.Tables.Add(TargetTable)
你只有設Datatable 但沒有加 item 到 Targettable
當然會出現 "並未將物件參考設定為物件的執行個體" 的語句出現


然後 15~21 可以用 table.select 來找 不要一筆筆比對 會累死電腦

本篇文章回覆於2019-05-29 07:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

小妏子
檢舉此回應
前段的問題已解,加入Add column


另外我把資料放至DataGrid1,沒有資料的欄位會顯示dbnull,所以在if迴圈加入TargetTable.Rows(i).Item(3) = Nothing
及TargetTable.Rows(i).Item(4) = Nothing,如果15~21 改用 table.select可以達到這個需求?謝謝

本篇文章回覆於2019-05-29 11:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

小妏子
檢舉此回應
不好意思,有小錯誤

本篇文章回覆於2019-05-29 11:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

P陳
檢舉此回應
大約就是這樣了 你參考看看

dim TargetTable as datatable
Add Column into Targettable (名稱 日期1 人名1 日期2 人名2)

For each Row1 in table1.rows
targettable.rows.add(from row1 名稱 日期1 人名1 )
next

for each Row2 in Table2.row
selerows=targettable.select("名稱='" & row2 ("名稱"))
if selerows.length=0 then
targettable.rows.add 再 (放入 名稱 日期2 人名2)
else
Selerows(0) 再 (放入 名稱 日期2 人名2)
end if
next

本篇文章回覆於2019-05-29 13:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.