- - PR -
mainFormとsubFormの連動。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-13 18:27
お世話になっております。にしおです。
【前提】 ○Table_main ID(主キー:数値型)・name・age ○Table_sub No(主キー:オートナンバー)・ID・money・check ○DataAdapter_main ○DataAdapter_sub ○DataSet_relation (DataAdapter_mainとDataAdapter_subから作成。) (XMLスキーマを表示し、2つのテーブルにIDをキーにリレーションを作成する。親要素はTable_main、子要素はTable_subです。リレーションシップ名はorderです。) Form上には、テキストボックスが3つ、データグリッドが1つ、ボタンが1つ配置されている。 DataGrid1に、DataSorceとして、DataSet_relationを、DataMemberとして、Table_main.orderとしてあります。 さらに、DataGridTableStyleオブジェクトを追加。MappingNameをTable_subとし、DataGrdColumnStyleオブジェクトを追加。MappingNameをTable_subのmoneyと、 Table_subのcheckとし、2つ作成します。 テキストボックス3つには、それぞれ、 DataSet_relation-Table_main.ID DataSet_relation-Table_main.name DataSet_relation-Table_main.ageがデータバインドされています。 そして、ボタンの裏にC#で DataSet_relation.clear(); DataAdapter_main.Fill(DataSet_relation,"Table_main"); DataAdapter_sub.Fill(DataSet_relation,"Table_sub"); というコードを書きます。 これで、ボタンを押すと、テキストボックスには、Table_mainのID・name ・ageが表示され、DataGridにはテキストボックスのIDとして表示されているものと同じIDを持ったTable_subの中のデータであるmoneyとcheckが表示されるはずです。 しかし、DataAdapter_sub.Fill(DataSet_relation,"Table_sub"); というコードの部分で、 'System.Data.ConstraintException' のハンドルされていない例外が system.data.dll で発生しました。 追加情報 : 制約を有効にできませんでした。1 つ以上の行に、Null か、一意でないか、または外部キー制約違反の値が含まれています。 というエラーメッセージが表示されてしまいます。 リレーションを組むときに、Table_subのNoの主キーを削除しても、しなくても同じ結果になります。 解決策が、見えなくなってしまったので、書き込みをさせていただきました。 どうか、皆様のお力をお借りしたいのです。 小さな事でもよいので、どうぞ宜しくお願いいたします。 [ メッセージ編集済み 編集者: にしお 編集日時 2004-01-13 18:28 ] | ||||
|
投稿日時: 2004-01-14 07:34
問題を切り分けて考え、独立して2つのテーブルが表示されるか試したところ、正しく表示されました。
つづいて、データアダプタの抽出条件は入力せずに純粋にリレーションが組めるか試したところ、データグリッドには正しく値が入りました。 ただし、アダプターの部分で、抽出条件をつけると表示できなくなってしまいます。 DataAdapter_mainのageの欄に=1という条件をつけます。 そうすると、Table mainのageが=1のIDと関連づけられた、Table subの値がデータグリッドに表示されるはずですよね? それが、上記のようなエラーが表示されてしまうのです。 これはどういうことでしょうか・・・。 どんなに小さなことでもいいので、お力添えをいただけると、大変助かります。 説明が長くなってしまい、わかりづらくなってしまい申しわけありません。 宜しくお願いいたします。 | ||||
|
投稿日時: 2004-01-14 11:07
ここの認識がちがってるよーな。 DataAdapter_subのほうにFillで読み込まれるのはすべての データじゃないでしょうか。 なので、制約違反のデータをいれようとしている、と 怒られるのでは? #2つの掲示板に同じ話をのせて、片方でヒントもらった 結果をこっちにだけ書く、というのはやらないでほしいな。 話をつなげるのが面倒になるから。 |
1