- PR -

2つのデータをそれぞれのDataGridに表示できない!(C#)

投稿者投稿内容
wiem
常連さん
会議室デビュー日: 2004/02/08
投稿数: 25
投稿日時: 2004-08-29 20:46
2つのAccessのテーブルがあって、2つのDataGridにBindingされています。
ところが、下のようにFillするときに、「//」を外すとエラーになってしまいます。
どうしてなのでしょうか?
下のままだと、Personsにバインドされたデータグリッドにのみ、
データが表示されます。いろいろ調べても、なぜできないのか分からないままです。

private void btnLoad_Click(object sender, System.EventArgs e)
{
odaPersonals.Fill(dsPersons1, "T_Persons");
// odaCards.Fill(dsCards1, "T_Connect");
}
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-29 21:39
引用:

wiemさんの書き込み (2004-08-29 20:46) より:
2つのAccessのテーブルがあって、2つのDataGridにBindingされています。
ところが、下のようにFillするときに、「//」を外すとエラーになってしまいます。
どうしてなのでしょうか?
下のままだと、Personsにバインドされたデータグリッドにのみ、
データが表示されます。いろいろ調べても、なぜできないのか分からないままです。


 どういうエラーがでていますか?省略せず、そのまま転記してください。

 どういうところで、どういう風に調べ、どのような回答を得て、どのようにしてみましたか?適切にまとめて、箇条書きにしてください。
wiem
常連さん
会議室デビュー日: 2004/02/08
投稿数: 25
投稿日時: 2004-08-29 22:36
1.エラー内容を報告します。
----------------------------------------------------------------------------
System.Data.ConstraintException' のハンドルされていない例外が system.windows.forms.dll で発生しました。

追加情報 : 制約を有効にできませんでした。1 つ以上の行に、Null か、一意でないか、または外部キー制約違反の値が含まれています。
----------------------------------------------------------------------------
です。

2.続いて、どういう風に調べ、どのような回答を得て、どのようにしたかを報告します。
1.本屋での立ち読みで、ADO.NET関連本中心です(ただ、これはパソコンを手にしていないので、あいまいなままです)。また、『VisualC#.NETによる〜データベースプログラミング』は持っています。
また、ADO.NET解説のものを中心に
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vboridatasetrelations.asp
辺りを検索しました。
2.回答は、Jittaさんがはじめてです。
3.最後のどのようにしてみたかが、問題ですが、これは、何と答えてよいのやら。
ごちゃごちゃと、いろいろやってみました。
どうしたらよいのか分からないので、
片方のテーブルの主キーを外してみたり、
データアダプターの構成を何度も作り直したり、
リレーションを作ったりやり直したり。
仕事が終わってからの時間ではありますが、あっちこっちいじってみました。
きっと、まだ試していない何かが原因だろうとは思うのですが、
特定できないのです。
gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2004-08-29 23:43
引用:

private void btnLoad_Click(object sender, System.EventArgs e)
{
odaPersonals.Fill(dsPersons1, "T_Persons");
// odaCards.Fill(dsCards1, "T_Connect");
}

1.エラー内容を報告します。
----------------------------------------------------------------------------
System.Data.ConstraintException' のハンドルされていない例外が system.windows.forms.dll で発生しました。

追加情報 : 制約を有効にできませんでした。1 つ以上の行に、Null か、一意でないか、または外部キー制約違反の値が含まれています。
----------------------------------------------------------------------------
です。



wiemさん こんばんわ!
上記コードでエラーが出るのは下段コードですか?

T_ConnectのほうであればAccessのテーブルの内容からキー項目などの
制約を削除して、もう一度最初から
(DataAdapter〜Dataset作成)を行ってみてはいかがでしょうか?
<エラーを見つけるには1つずつ作業をしていくのが一番だと思います>
<特にエラーが出る所だけプロジェクトを作ってみるとか・・・>

エラーの内容からすると単純な制約違反(2重キーorキー値=Null)
のような気がしますが・・・
当方も初心者ですので的外しのお返事ならご容赦ください。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-08-30 00:14
諸農です。

引用:

3.最後のどのようにしてみたかが、問題ですが、これは、何と答えてよいのやら。
ごちゃごちゃと、いろいろやってみました。


これが肝心なところであって、ここを説明できなければ、
回答を出せる人は超能力者に限定されます(^^;)

引用:

片方のテーブルの主キーを外してみたり、
データアダプターの構成を何度も作り直したり、
リレーションを作ったりやり直したり。



元の投稿を見る限りでは、T_PersonsとT_Connectは
別のDataSetに格納されているようですね。
それとも同じDataSetに格納しているのでしょうか?
dsPersons1とdsCards1は何ですか?どのようにして作りましたか?
T_PersonsとT_Connectの2つのテーブルには何らかの関係ってあるのですか?
OleDBDataAdapterはどのように設定していますか?
DataSetは型付きですか?
ウィザードに頼らず全部をコードで書いた場合はどうなりますか?


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
wiem
常連さん
会議室デビュー日: 2004/02/08
投稿数: 25
投稿日時: 2004-08-30 00:46
片側のテーブルの主キーを外したら思うようにDataGridに表示することができました。
情けないことに、「ごちゃごちゃ」の最中にこれを試していませんでした。

それぞれのテーブルは別々のデータセットに格納されていました。
T_Personsには主キー1つと、T_ConnectにはT_Personsの主キーに設定したフィールドと「年」とに主キーを設定していました。
T_Personsの主キーを外すことによってエラーが回避されました。

こんなことは試していたろうと思っていたのですが、違うことばかりしていたようです。お騒がせして申し訳ありませんでした。
また、DataSetは型付きですか?の問いに対しては、その質問の意味を改めて確認中です。

ただ、改めて是非お聞きしたいのです。
データグリッドに二つのテーブルを、主キーを外すことによって表示できたことだけでは自分の頭の中が納得していません。ならばなぜ、そうなのかを知りたいのです。
贅沢ながら、この機会にしがみついています。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-08-30 00:52
引用:

wiemさんの書き込み (2004-08-30 00:46) より:

ただ、改めて是非お聞きしたいのです。
データグリッドに二つのテーブルを、主キーを外すことによって表示できたことだけでは自分の頭の中が納得していません。ならばなぜ、そうなのかを知りたいのです。
贅沢ながら、この機会にしがみついています。



NAL-6295です。

どうせ贅沢するなら、自分の力で、理解できるように一つずつ情報を集め、それを関連付けしていくという贅沢な時間の使い方をしてみませんか?
きっと、有意義で素敵な時間になると思いますし、得られる副産物も多いと思います。

ポイントは自分が何を知っていて、何を知らないのかを整理する事。
知っている情報が、どう繋がっているのか、知っている情報だけではどう繋がらないのか理解する事。
_________________
7だけが孤独。

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-08-30 00:54 ]
wiem
常連さん
会議室デビュー日: 2004/02/08
投稿数: 25
投稿日時: 2004-08-30 02:45
ウィザードに頼らず全部をコードで書いた場合など、
自分が何を知っていて、何が繋がらないのかについて、反省しています。
あまりにも脆弱な知識、混乱したままの状態を整理していこうと思い直しています。
ご指摘どおり、必要な「情報を集め」て整理されていなかったことが原因のようです。

.NetFrameworkは宇宙のように膨大であるとか、ADO.NETについても一冊では、などの言葉に圧倒されて、あせってしまっていたようです。
今回、ちょうどよい機会となり、助かりました。
お恥ずかしながら、自分で書くのも変ですが、今回はよい例題でした。
なんだか、取っ掛かりやすくなったように思います。
分からない部分のキーポイントがいくつか見えてきたように感じます。

皆さんに少しでも近づきたい気持ちが、さらに高揚してきました。
感謝しています。

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