- PR -

[ASP.net]親子リレーション時のRowFilterにて絞込み

1
投稿者投稿内容
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-07-14 14:23
 いつも参考にさせて戴いております。
RowFilterにて親TABLEと子TABLE『親子関係(1対N)』の絞込みを行い、
いずれかヒットしたデータのみDataGridへ表示したいのですが...(・・:wink:
DataGridへ表示するのは、親TABLEの情報を一覧形式にて表示です。
---------
親Table:ID, CHILD_ID, VAL_1      'Tables(0)
子Table:ID, SVAL_1, SVAL_2       'Tables(1)
 ※子がない場合は、CHILD_ID = NULL
---------
Dim oDataSet As DataSet
Dim oDataViewManager As DataViewManager
oDataSet = Me.GetDataSet() 'SqlDataAdapterにて親Tableと子Tableを取得
oDataViewManager = New DataViewManager(oDataSet)
If Not oDataViewManager.DataSet.Tables(0).Rows.Count.Equals(0) Then
  Dim oRelation As System.Data.DataRelation = New System.Data.DataRelation("REL_ID", oDataViewManager.DataSet.Tables(0).Columns("CHILD_ID"), _
oDataViewManager.DataSet.Tables(1).Columns("ID"), False)
  oDataViewManager.DataSet.Relations.Add(oRelation)
End If
'↓ここから煮詰まり状態
oDataViewManager.DataViewSettings(1).RowFilter = "SVAL_1 LIKE '%キーワード%' OR SVAL_2 LIKE '%キーワード%'"
oDataViewManager.DataViewSettings(0).RowFilter = "(CHILD_ID IS NOT NULL AND (COUNT(Child(REL_ID).ID) > 0)) OR VAL_1 LIKE '%キーワード%'"
'↑ここまで煮詰まり状態
Me.DataGrid1.DataSource = oDataViewManager.CreateDataView(oDataViewManager.DataSet.Tables(0))
Me.DataGrid1.DataBind()
---------
と、RowFilterにて絞り込むとキーワードと一致しない子データまで表示されてしまいます。
「DataViewSettings(1).RowFilter」の辺りの使い道が間違っているのでしょうけど...

過去ログを参照しながらあれこれ試してはみたのですが...(ノ_・、)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9944&forum=7
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=9453
今ひとつ解りづらいかもしれませんが、ご指摘・アドバイス等がありましたら
よろしくお願い致します。

[環境]Windos2000+ASP.NET+SQLServer2000+IE5.5
--------
[追記]
DataViewSettings(0).RowFilter = "(CHILD_ID IS NOT NULL ...
としてますが、とりあえず "CHILD_ID IS NULL" データについては後回し考え
です。


[ メッセージ編集済み 編集者: えんぞ@見習 編集日時 2004-07-14 14:38 ]

[ メッセージ編集済み 編集者: えんぞ@見習 編集日時 2004-07-14 14:44 ]
1

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