DOBON.NETプログラミング掲示板過去ログ
メインフォームとサブフォームの関連。
題名: メインフォームとサブフォームの関連。
著者: yuki
日時: 2004/01/13 4:52:55
ID: 2132
この記事の返信元:
(なし)
この記事への返信:
[2137]
Re[1]: メインフォームとサブフォームの関連。
Sugi@ぱぱんぶぃびぃ
2004/01/13 19:10:22
ツリーを表示
環境/言語:[C#、.NET Frameworkのバージョン1.1]
分類:[.NET]
おはようございます。yukiです。
【前提】
○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の主キーを削除しても、しなくても同じ結果になります。私には解決策がわからなくなってしまいました。
どうか、皆様のお力をお借りしたいのです。
小さな事でもよいので、どうぞ宜しくお願いいたします。
題名: Re[1]: メインフォームとサブフォームの関連。
著者: Sugi@ぱぱんぶぃびぃ
URL:
http://www.mitene.or.jp/~sugisita/
日時: 2004/01/13 19:10:22
ID: 2137
この記事の返信元:
[2132]
メインフォームとサブフォームの関連。
yuki
2004/01/13 4:52:55
この記事への返信:
[2145]
Re[2]: メインフォームとサブフォームの関連。
yuki
2004/01/14 7:31:18
ツリーを表示
> 'System.Data.ConstraintException' のハンドルされていない例外が system.data.dll で発生しました。
> 追加情報 : 制約を有効にできませんでした。1 つ以上の行に、Null か、一意でないか、または外部キー制約違反の値が含まれています。
制約を作成する必要がなければ、
リレーションシップの作成時に Constraints (制約)をFalseにしてみてください。
題名: Re[2]: メインフォームとサブフォームの関連。
著者: yuki
日時: 2004/01/14 7:31:18
ID: 2145
この記事の返信元:
[2137]
Re[1]: メインフォームとサブフォームの関連。
Sugi@ぱぱんぶぃびぃ
2004/01/13 19:10:22
この記事への返信:
(なし)
ツリーを表示
独立では表示されます。
さらに、ただ単純にリレーションをつけても表示されます。
ただし、アダプターの部分で、抽出条件をつけると表示できなくなってしまいます。
DataAdapter_mainのageの欄に=1という条件をつけます。
そうすると、Table mainのageが=1のIDと関連づけられた、Table subの値がデータグリッドに表示されるはずですよね?
それが、上記のようなエラーが表示されてしまうのです。
これはどういうことでしょうか・・・。
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
おはようございます。yukiです。
【前提】
○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の主キーを削除しても、しなくても同じ結果になります。私には解決策がわからなくなってしまいました。
どうか、皆様のお力をお借りしたいのです。
小さな事でもよいので、どうぞ宜しくお願いいたします。