- PR -

TreeViewにつかうリレーションセット 親子孫

1
投稿者投稿内容
吉備
会議室デビュー日: 2003/01/29
投稿数: 10
お住まい・勤務地: 東京都
投稿日時: 2003-02-13 17:07
TreeViewにどっぷり中です。
まだ、調査中のことばかりで、たびたびお世話になってます。

TreeViewに、複数のテーブルをセットしたいのですが、いい方法が浮かびません。
親(TableA)、子(TableB)、孫(TableC)の階層でテーブルがあり、
リレーションをセットしたいのです。
親、子までならばうまくいきます。

myDataset.Relations.Add("Lists", myDataset.Tables("TableA").Columns("ID"), myDataset.Tables("TableB").Columns("ID"))

For Each rowCate In myDataset.Tables("TableA").Rows
n1 = New TreeNode()
n1.Text = rowCate("ID").ToString
TreeView1.Nodes(0).Nodes.Add(n1)

For Each rowSort In rowCate.GetChildRows("Lists")
n2 = New TreeNode()
n2.Text = rowSort("ID").ToString
n1.Nodes.Add(n2)

#For〜
ここにTableCをセットしたい
Next#

Next
Next

TableBのFor文の中に、TableCのIDをセットする方法で悩んでいます。
力ずくですが、以下のような方法を試しましたが、うまくいきません。

TableBのFor文でセットされているIDを親と見せかけて、TableCも子と見せかける。
*
myString = "Select * From TableB Where ID =" & CInt(rowSort("ID")) "
Dim myDataAdapter As New OleDbDataAdapter(String.Format(myString), Application("conn").ToString)
myDataAdapter.Fill(myDataset, "TableB1")

myDataset.Relations.Add("Lists2", myDataset.Tables("TableB").Columns("ID"), myDataset.Tables("TableC").Columns("ID"))
*

相当恥ずかしいTryで、情けないところです・・・何かアドバイスがありましたら、
どうぞ、よろしくお願いいたします。。
吉備
会議室デビュー日: 2003/01/29
投稿数: 10
お住まい・勤務地: 東京都
投稿日時: 2003-02-14 17:55
自己レスなのですが、とりあえず解決しました。
#ただし処理に時間が掛かりすぎるので、他の方法を考えなければならないかもしれません。

#For〜
ここにTableCをセットしたい
Next#

のところに、TableA, TableBでリレーションを張ったものを親として、
TableCを子のリレーションを新たに張る方法を考えていたのですが、
うまくいきませんでした。

なので、TableA, TableBのリレーションをForで回す中で、
TableA,B,Cのキー「ID」をWhereに入れたTableCを開け、

* For Each rowCate2 In myDataset.Tables("TableC").Rows
n3 = New TreeNode()
n3.Text = rowCate2("ID").ToString
n2.Nodes.Add(n3)
Next

と、してみました。(でも、ホントに遅い・・・)
質問も、自己レスも、よくわからないままで読まれた方にも申し訳ないです。

結局、一対多対多で繋がっているテーブルのリレーションを作る方法が、
思いつかないので、もし、何かありましたら今後ともよろしくお願いいたします。
(特に何もなければ、消えていって構いません;;)
1

スキルアップ/キャリアアップ(JOB@IT)