0

いくつかのレガシー コードで奇妙な問題のように思われる問題に遭遇しました。問題のコードは、2 つの DataTables を使用して DataSet を作成し、データがグリッド ビュー (カスタム ユーザー コントロール) で使用される前にテーブル間の関係を定義しています。子レコードは適切な親レコードの下にグループ化されています。ParentColumnとのChildColumn両方が一致する値を持つ列に設定されているため、リレーションは正しく設定されているようです。ただし、他の 2 つの個別の列の値が 2 つの親間で同じである場合、すべての子レコードは 1 つの親の下にのみ表示されます。

データセット情報

リソース テーブル

| | ユーザー ID | メンバー ID | 名 | 姓 | メール |
| | 53C ... | C3A …… | ジェームズ ..... | バーンズ ...| jbarnes@rmail.com |
| | AE4 ... | 07A ………… | ジェームズ ..... | バーンズ ...| buckybarnes@hotmail.com |

リクエスト表

| | リクエスト ID | 所有者 ID | メンバー ID |
| | 1234 ……| 53C ……| C3A ………… |
| | 2345 ……| AE4.......| 07A ……|
| | 7689 ........| AE4.......| 07A ………… |

このシナリオでは、Resourceテーブルの行が親レコードで、Requestテーブルの行が子です。これに基づくと、53C James Barnes のレコードの下に 1 行、AE4 James Barnes の下に 2 行あると予想されます。実際には、53C (と思う) の下に 3 つの行が表示されています。James Barnes です。もう一人のジェームス・バーンズはリストされていません。

のセットアップは次のDataRelationとおりです。

DataRelation resource_timesheet = new DataRelation(
                "relationName",
                ResourceTable.Columns[0],
                RequestTable.Columns[1],
                false);

親/子の値列が直接参照されているため、列名は問題にならないと思います (多分?)。

ここや他の場所で見つけることができる大量の記事を調べましたが、同様のものは見つかりませんでした. リソース テーブルの姓と名が一致する場合を除き、他のすべては正常に機能しています。

4

0 に答える 0