- ベストアンサー
VB2005の DataSet.xsdファイルでリレーションシップの設定時に発生するエラーについて
- VB2005の DataSet.xsdファイルで、(親テーブル)tokuisaki.tokuisakicodeフィールドと、(子テーブル)uriage.uriagesakicodeフィールドとで、リレーションシップを設定しましたが、(1)制約の選択で「外部キー制約のみ」にすると、tokuisaki.tokuisakicodeにデータがあるにもかかわらずForeignKeyConstraintの例外が発生します。
- (2)制約の選択で「リレーションシップのみ」にすると、例外が発生しません。
- (1)では、マスタにデータがあるのにどうしてエラーが発生するかわかりません。どなたか、わかるかたがいましたら教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まずはXSDを、データセットでの表示ではなく、XML表示させ、情報を公開しましょう。
その他の回答 (1)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
整理します。 [登録先]マスタ 売上先コード(キー) 売上先名 [売上]トラン 伝票番号(キー) 売上先コード リレーショナル [売上].[売上先コード]は[登録先].[売上先コード]を参照 んで ※「外部キー制約のみ」 <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」のエラーが出ているからには、その関連だと思うのですが。。。。 登録関連の部分の公開もしないとわからない状況のようです。
お礼
1050YENさん、時間を取らせて申し訳ありません。 DataSetに、urageだけ(自動的に作成されるVBのコードで)読み込んで、 tokuisakiがDatasetに読み込まれていなかったことが原因でした。 Datasetのtokuisakiにfillをして、問題解決しました。 VB2005初心者のため、原因特定に時間がかかりました。 ありがとうございました。
お礼
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>
補足
1050YENさん、申し訳ありません。 DataSetに、urageだけ読み込んでおり、 tokuisakiがDatasetに読み込まれていなかったためかもしれません。 VB2005の初心者なものですから、もう一度確認してみます。