- PR -

DataTableのForeignKeyConstraintについて

1
投稿者投稿内容
みやぼん
常連さん
会議室デビュー日: 2003/09/08
投稿数: 33
投稿日時: 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
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-01-30 07:29
だって、 fr は dt1 と dt2 での制約なのに関係ない "ABC" なるテーブルに追加しようとしているんだから、そりゃエラーになるでしょう。
みやぼん
常連さん
会議室デビュー日: 2003/09/08
投稿数: 33
投稿日時: 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
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-01-31 13:35
制約は子となるテーブルに付加します。
みやぼん
常連さん
会議室デビュー日: 2003/09/08
投稿数: 33
投稿日時: 2005-01-31 13:51
ありがとうございます。
子テーブルに制約をつけると
正常に処理が完了出来る事を確認いたしました。

1

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