- - PR -
DataTableのForeignKeyConstraintについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-01-29 23:37
いつもお世話になっております。
宮崎と申します。 DataTableのConstraints.Addメソッドを利用して ForeignKeyConstraintクラスで作成した 制約を追加しようとしておりますが 「ForeignKey がテーブル ABC に属していないため、この制約を追加できません。 」 といったエラーが発生してしまいます。 DataTableにもDataColumnにもForeignKeyを指定できるような メソッドもプロパティも無いために困っております。 どなたか同じエラーが発生して解決された方はおられますでしょうか? コードは下記のコードを使用しております。 Dim dt1 As New DataTable Dim dt2 As New DataTable Dim ds As New DataSet dt1.Columns.Add("A", GetType(String)) dt1.Columns.Add("B", GetType(String)) dt2.Columns.Add("C", GetType(String)) dt2.Columns.Add("D", GetType(String)) fr = New ForeignKeyConstraint("AtoC", dt1.Columns("A"), dt2.Columns("C")) fr.DeleteRule = Rule.None fr.AcceptRejectRule = AcceptRejectRule.Cascade ds.Tables.Add(dt1) ds.Tables.Add(dt2) ds.Tables("ABC").Constraints.Add(fr) ds.EnforceConstraints = True |
|
投稿日時: 2005-01-30 07:29
だって、 fr は dt1 と dt2 での制約なのに関係ない "ABC" なるテーブルに追加しようとしているんだから、そりゃエラーになるでしょう。
|
|
投稿日時: 2005-01-31 13:22
申し訳ございません。
コードが正確に移行できておりませんでした。 Dim dt1 As New DataTable Dim dt2 As New DataTable Dim ds As New DataSet dt1.TableName = "ABC" ⇒ テーブル名はきちんと事前につけております。 dt2.TableName = "ABCD" dt1.Columns.Add("A", GetType(String)) dt1.Columns.Add("B", GetType(String)) dt2.Columns.Add("C", GetType(String)) dt2.Columns.Add("D", GetType(String)) fr = New ForeignKeyConstraint("AtoC", dt1.Columns("A"), dt2.Columns("C")) fr.DeleteRule = Rule.None fr.AcceptRejectRule = AcceptRejectRule.Cascade ds.Tables.Add(dt1) ds.Tables.Add(dt2) ds.Tables("ABC").Constraints.Add(fr) ⇒ここでエラーが発生いたします。 ds.EnforceConstraints = True |
|
投稿日時: 2005-01-31 13:35
制約は子となるテーブルに付加します。
|
|
投稿日時: 2005-01-31 13:51
ありがとうございます。
子テーブルに制約をつけると 正常に処理が完了出来る事を確認いたしました。 |
1