- - PR -
DataSetのリレーションにつきまして。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-03-15 21:14
いつもお世話になっております。
2つのDataSetにリレーションを結ぶ方法は色々な所で 紹介されておりますが、親DataSetにあって子DataSetに 無いデータ(或いはその逆)が存在する場合、エラーとなって しまいます。 このエラーを回避し、片方にあって片方に無い場合、Nullで リレーションを結ぶ方法はあるのでしょうか? どなたかご存知の方がいらっしゃいましたら、ご教示お願い 致します。 | ||||||||
|
投稿日時: 2005-03-17 22:17
え〜〜〜!!どこに?どこに?DataTableの間違い? NilableをTrueにしてもだめですか? あれれ?親にあって子にない、は、エラーにならないでしょ? [ メッセージ編集済み 編集者: Jitta 編集日時 2005-03-17 22:17 ] | ||||||||
|
投稿日時: 2005-03-18 15:32
こんにちは。
その通りだと思います。 逆に親がなく、子がいるっていうのはどうやってもエラーになると思います。 DataTableに対してデータをロードするだけだったら DataTableのBeginLoadDataメソッドを呼んであげればいいのですが、 所詮はリレーションを結んだことにはならないですね。 それからDataSetの中身の元データは何でしょうか? もしDBから読んでいるのであればしっかりとDBの制約で 同様のリレーションをきるべきではないでしょうか・・・ | ||||||||
|
投稿日時: 2005-03-18 16:18
そもそも、リレーション(参照整合性制約)は、「親が存在しない子」のようなデータを
エラーにして登録されないようにするためのものですよね。 「親が存在しない子」を許容するのであれば、参照整合性制約を設定する意味がないと 思います。 | ||||||||
|
投稿日時: 2005-03-19 00:26
皆様、ご回答誠に有り難うございます。
結果としまして、下記内容で何とか対処出来たかと思われます。 ↓ da = New OracleDataAdapter ds = New DataSet da.SelectCommand = cm1 da.Fill(ds, "BUMON") cm1.Dispose() da.SelectCommand = cm2 da.Fill(ds, "SYAIN") cm2.Dispose() Dim ParentCols As DataColumn Dim ChildCols As DataColumn Dim relKANKEI As DataRelation ParentCols = ds.Tables("BUMON").Columns("BUMONCD") ChildCols = ds.Tables("SYAIN").Columns("BUMONCD") Dim blnCon As Boolean = False relKANKEI = New DataRelation("BUMONSYAIN", ParentCols, ChildCols, blnCon) ds.Relations.Add(relKANKEI) DataGrid1.DataSource = ds.Tables(0) DataGrid1.DataBind() ↑ …おっしゃる通り、‘親にあって子に無い’状態自体が おかしいのですが、実際の運用上、人が一人も居ない部門が 組織上あったり(?なんだそりゃ)、歪んでおります。 あと、VB.NETで、Nilableというキーワードが探しきれなかったのですが、 これはどういうものなのでしょうか? よろしくお願い申し上げます。 | ||||||||
|
投稿日時: 2005-03-19 02:07
で、「何とか対処出来た」んならいいのでしょうけど、 そもそもそのDataSet上でリレーションを張らなければいいだけな気がします。 | ||||||||
|
投稿日時: 2005-03-19 07:46
ん〜?DataSetデザイナでは、Nilableとでていたような? ↓↓あ〜、そうかもしれないniLLable [ メッセージ編集済み 編集者: Jitta 編集日時 2005-03-19 15:38 ] | ||||||||
|
投稿日時: 2005-03-19 11:02
googleでも殆ど引っかからないしMSDNでも引っかからないので[nullable]か[nillable] かな〜と思いました。 「nillable」はXML用語なのかな〜と思ってたらデータベースでも使用するのですね。 [ メッセージ編集済み 編集者: べる 編集日時 2005-03-19 20:13 ] |
1