• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:リレーションシップ)

VB2005の DataSet.xsdファイルでリレーションシップの設定時に発生するエラーについて

このQ&Aのポイント
  • VB2005の DataSet.xsdファイルで、(親テーブル)tokuisaki.tokuisakicodeフィールドと、(子テーブル)uriage.uriagesakicodeフィールドとで、リレーションシップを設定しましたが、(1)制約の選択で「外部キー制約のみ」にすると、tokuisaki.tokuisakicodeにデータがあるにもかかわらずForeignKeyConstraintの例外が発生します。
  • (2)制約の選択で「リレーションシップのみ」にすると、例外が発生しません。
  • (1)では、マスタにデータがあるのにどうしてエラーが発生するかわかりません。どなたか、わかるかたがいましたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

まずはXSDを、データセットでの表示ではなく、XML表示させ、情報を公開しましょう。

tomiyamax
質問者

お礼

1050YENさん。ありがとうございます。xsdからxmlに出してみたのですが 全ての情報は文字数が多くて登録できませんでした。よろしくお願いします。 <xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:tokuisaki" /> <xs:field xpath="mstns:uriagesakicode" /> </xs:unique> <xs:unique name="uriage_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:uriage" /> <xs:field xpath="mstns:denno" /> </xs:unique> <xs:keyref name="FK_tokuisaki_uriage" refer="Constraint1" msdata:ConstraintOnly="true"> <xs:selector xpath=".//mstns:uriage" /> <xs:field xpath="mstns:uriagesakicode" /> </xs:keyref>

tomiyamax
質問者

補足

1050YENさん、申し訳ありません。 DataSetに、urageだけ読み込んでおり、 tokuisakiがDatasetに読み込まれていなかったためかもしれません。 VB2005の初心者なものですから、もう一度確認してみます。

その他の回答 (1)

回答No.2

整理します。 [登録先]マスタ 売上先コード(キー) 売上先名 [売上]トラン 伝票番号(キー) 売上先コード リレーショナル [売上].[売上先コード]は[登録先].[売上先コード]を参照 んで ※「外部キー制約のみ」 <xs:keyref name="FK_tokuisaki_uriage" refer="Constraint1" msdata:ConstraintOnly="true"> ※「リレーションシップのみ」 <xs:keyref name="FK_tokuisaki_uriage" refer="Constraint1" msdata:ConstraintOnly="false"> 二つのパターンで、.NET2002ですが、DataGrid(.NET2005ではDataGridView?)のデータソースにデータセットを設定して、手でデータを入力してみました。 問題なく、登録が可能でした。。。 「ForeignKeyConstraint」のエラーが出ているからには、その関連だと思うのですが。。。。 登録関連の部分の公開もしないとわからない状況のようです。

tomiyamax
質問者

お礼

1050YENさん、時間を取らせて申し訳ありません。 DataSetに、urageだけ(自動的に作成されるVBのコードで)読み込んで、 tokuisakiがDatasetに読み込まれていなかったことが原因でした。 Datasetのtokuisakiにfillをして、問題解決しました。 VB2005初心者のため、原因特定に時間がかかりました。 ありがとうございました。

関連するQ&A