2012-01-03 5 views
0

親テーブルを持つデータベースにはいくつかのテーブルがありますが、Pは他の子テーブルと1:Mリレーションシップを持つのに対して、一部の子テーブルとは1:1のリレーションシップを持っています。私はによって設計時にDataSetを追加している。このためリレーショナルデータのフィルタデータセット

[追加] - > [新しい項目を - > DataSetを - > DataSet1.xsd「
だから、私は彼らの1と一緒に、必要なすべてのテーブルがあります:1または1:Mの関係を。

親テーブルの選択されたレコードと関連する子レコードのみがデータセットに取り込まれるように、メインテーブルアダプタにいくつかのフィルタを適用しました。最後に、このデータをDataSetからXMLファイルに書きたいと思います。

しかし、私は1つの問題が発生しています。私が得ている最終的なデータセットは、子テーブルのすべてのレコードを持つことです。代わりに、親テーブルが関連するレコードを持つ子レコードのみが必要です。

ParentDataSet parentDataSet = new ParentDataSet(); 
ParentTableAdapter parentTableAdapter = new ParentTableAdapter(); 
parentTableAdapter.Fill(parentDataSet.ParentTable, column1Value); // All fine until here as I have applied filter in tableAdapter SQL 

ChildTableAdapter childTableAdapter = new ChildTableAdapter(); 
//returns all rows in the child table -- shouldn't it return only those child records for which parent dataset table is having records?? 
childTableAdapter.Fill(parentDataSet.ChildTable); 

parentDataSet.WriteXml(xmlFilePath); 

は、私がここで行方不明です何を案内してください -

私は、次のコードを使用していますか?

ありがとうございました!

答えて

2

あなたはthis articleを見ましたか?著者はデフォルトで

と言い、DataSetデザイナーが「だけの関係」としてDataRelations 間の親子テーブルを設定します。これはDataSet は自分 データベース、クライアント上で外部キー制約を強制しないことを意味します...

は、外部キー制約に親子関係の種類を変更してみてください。次にChildTableAdapterSelectCommandプロパティを確認します。それはあなたが期待どおりにデータをフィルタリングしています。

+0

ご返信ありがとうございます。それは問題を解決しませんでした - だから、私は親テーブルのために追加しただけでなく、関連テーブルのフィルタを追加する必要があるようです。 – iniki

+0

私は親と関連する子テーブルのフィルターを追加しました:-) – iniki

+0

@iniki私の答えは実際には問題を解決していないので、ソリューションを別の答えとして投稿して受け入れるべきです。 (あなたが尋ねた質問にあなた自身の答えを受け入れることができます。) – Kimberly

関連する問題