タイトル | : Re^4: データテーブルの主キー設定を複数したい |
記事No | : 5735 |
投稿日 | : 2007/06/27(Wed) 20:23 |
投稿者 | : 魔界の仮面弁士 |
> マージでしたいことをリレーションでもできるのですか?
リレーションの仕事は、行単位でのテーブル間の関連付けなので、役割が違うかな…。
「発注伝票」テーブルと「発注明細」テーブルをつなげたり、 「銀行」テーブルと「銀行支店」テーブルをつなげたりとか。
--------- ListBox1、DataGridView1、DataGridView2 を貼っておいてください。 ---------
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load Dim table1 As New DataTable("親テーブル") table1.Columns.Add("コード", GetType(String)) table1.Columns.Add("名称", GetType(String))
Dim table2 As New DataTable("子テーブル") table2.Columns.Add("コード", GetType(String)) table2.Columns.Add("番号", GetType(Short)) table2.Columns.Add("名称", GetType(String))
Dim ds As New DataSet() ds.Tables.Add(table1) ds.Tables.Add(table2)
table1.Rows.Add("01", "血液型") table1.Rows.Add("02", "都道府県")
table2.Rows.Add("01", 1, "A型") table2.Rows.Add("01", 2, "B型") table2.Rows.Add("01", 3, "O型") table2.Rows.Add("01", 4, "AB型") table2.Rows.Add("02", 1, "北海道") table2.Rows.Add("02", 2, "東京都") table2.Rows.Add("02", 3, "沖縄県")
ds.Relations.Add("関連", table1.Columns("コード"), table2.Columns("コード"))
'リレーションを使いながら、データを ListBox1 に列挙する例 For Each table1Row As DataRow In table1.Rows ListBox1.Items.Add(String.Format("({0}){1}", table1Row("コード"), table1Row("名称"))) For Each table2Row As DataRow In table1Row.GetChildRows("関連") ListBox1.Items.Add(String.Format(" ({0}){1}", table2Row("番号"), table2Row("名称"))) Next Next
'DataGridView1 と DataGridView2 を繋いで、リレーションを表現する例 ' (1側 を選択すると、関連データが 2側に表示される) Dim parentBinder As New BindingSource(ds, "親テーブル") Dim childBinder As New BindingSource(parentBinder, "関連") DataGridView1.DataSource = parentBinder DataGridView2.DataSource = childBinder End Sub
|