C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 50 を表示中)
■27396 / )  2つのDataTableの比較抽出方法について
□投稿者/ PROTO (16回)-(2008/11/05(Wed) 12:40:36)

分類:[.NET 全般] 

いつも参考にさせていただいています。

同じ構造のDataTableが2つ(TableA、TableB)有り、TableAの列Aに含まれるデータと一致するTableBの全てのレコードを抽出してTableCを作成したいと考えています。
どのような方法があるでしょうか?お知恵を貸していただければと思います。

環境:WinXP VS2005 言語:VB.NET

DataTableの構造TableA
 列A
 列B
 列C
 
DataTableの構造TableB
 列A
 列B
 列C

レコード数は
TableA < TableB

テーブル間にリレーションを張る方法を考えたのですが、TableAを親としたときに、
レコード数がTableA > TableBの場合、リレーションを設定するときに問題ないのですが、
レコード数がTableA < TableBの場合、リレーションを設定するときに下記のエラーが発生します。
"対応する親の値が指定されてない値があるため、この制約を有効にできません。"
  と出てしまいます。

リレーションを張る方法を、
http://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/relationaldata/vb.aspx
を参考に下記のようにしたのですが、一致するレコードを全て取得したいのですが、
どののようにすればいいのかで、止まっています。

Dim ds As DataSet
Dim dt1, dt2 As DataTable
ds = New DataSet
ds.Tables.Add(dt1)
ds.Tables.Add(dt2)

Me.DataGridView1.DataSource = ds
Me.DataGridView1.DataMember = "TableA"

Me.DataGridView2.DataSource = ds
Me.DataGridView2.DataMember = "TableB"
'リレーションを設定
ds.Relations.Add(New DataRelation("TableA_TableB", ds.Tables("TableA").Columns(0), ds.Tables("TableB").Columns(0)))
Me.DataGridView3.DataSource = ds
Me.DataGridView3.DataMember = "TableA.TableA_TableB"

返信 編集キー/


管理者用

- Child Tree -