• ベストアンサー

[Access2000]リレーションが設定されたレコードが必要

ACCESS2000 1対1でリレーションを設定しています。 T_マスター T_内容 ID→ID 参照整合性ON 連鎖OFF 結合の種類「2」 新しいレコードをT_マスターに追加しようと すると、 「リレーションが設定されたレコードが必要」 とエラーメッセージが出ます。 T_マスターにはレコードが追加されるようなんですが、T_内容にはレコードが追加されないようで そのためエラーが発生するようです。 このエラーを解消するためにはどのような リレーションの設定をすればよろしいでしょうか?

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

>新しいレコードをT_マスターに追加しようとすると「リレーションが設定されたレコードが必要」とエラーメッセージが出ます。 1対1でリレーションでこのメッセージがでるのはテーブルにリレーションの結合する同じキーが無いレコードをリレーションテーブルに保存しようとした場合にでます。 「T_マスターに追加しようとすると・・」でるということはT_マスターはテーブル側ではなくリレーションテーブルになっている可能性があります。 しかし「T_マスターにはレコードが追加されるよう・・」というのは矛盾があります。「T_マスターに追加しようとすると」ではなくT_内容に保存しようとした際にでるのではないでしょうか? T_マスターにキーがなければT_内容に入力できません。(T_マスターがテーブルでT_内容がリレーションテーブルの場合) まず結合の種類を確認してください。 T_マスターがテーブルでT_内容がリレーションテーブル

aoitorigairu
質問者

お礼

回答ありがとうございました。 違う方法でやってみました。クエリーでフォームに連結し、リレーションシップを削除したらうまく行きました。リレーションシップを削除していいものかわかりませんが、一応自己解決したので記しておきます。

関連するQ&A

  • リレーション?参照整合性の謎?

    Ac2000です。 「T_メンバー一覧」(テーブル) ・ID ・名前 ・所属 「T_マスタ」(テーブル) ・ID ・名前 ・所属 ・備考 とします。 それぞれからフォームを作成し、「F_マスタ」のフォーム上で IDはコンボボックスとし、ここでIDを指定すれば 名前と所属が入るようになっています。 「T_メンバー一覧」に変更があった場合(所属が変わるなど)に、 「T_マスタ」も自動で変更されるようにしたいのです。 T_マスタにデータが入っている場合です。(1件のみ) リレーションをはり、ID同士で設定しました。 「参照整合性」にチェックをし作成しようとすると、 「T_マスタ」テーブルのデータが参照整合性の規則に違反しています。 たとえば、ある社員に関連するレコードがリレーションテーブルにあるときに、 この社員に関連するレコードが主テーブルにありません。 ・・・・ となってしまうのです。 T_マスタにデータが入っておらず、上のリレーションが成功したあとに、 入力をしようと、F_マスタを開き、IDを選択して、 フォームを閉じようとすると、 「テーブル 'T_メンバー一覧'にリレーションシップが設定されたレコードが必要なので、 レコードの追加や変更は行うことはできません。 となります。 この2点を解決する回避策を教えてください。

  • Accessの参照整合性について

    アクセスでリレーションシップをはると参照整合性にチェックするボックスがありますよね。 以下の選択の組み合わせが考えられると思うのですが、 1.参照整合性にチェックしない場合 2.参照整合性のみチェックした場合 3.参照整合性と連鎖更新にチェックした場合 4.参照整合性と連鎖更新と連鎖削除にチェックした場合 一(マスタ)対多のリレーションを張ったとき、以下のように理解しています。 2.のとき マスタにあるものしか登録できない。また、マスタは他のテーブルにリレーションを張っている場合、削除も編集もできない。 3.のとき マスタにあるものしか登録できない。またマスタで更新をかけると、他のテーブルのレコードも更新がかかる。また、マスタは他のテーブルにリレーションを張っている場合、削除はできない。 4.のとき マスタにあるものしか登録できない。またマスタで更新、削除を行なうと他のテーブルのレコードも更新、削除がかかる。 では1.のときってリレーションシップは張れるのですが、何の意味があるのでしょうか?

  • Access2002 参照整合性について

    テーブル間にリレーションシップを設定する場合、リレーションテーブル側に主テーブルにないレコードがあると参照整合性を設定できないにも関わらず、「結合の種類」で「3」(リレーションテーブル側の全レコードと主テーブル側の同じ結合フィールドのレコードだけを含める)を選べるのは何故でしょうか。 参照整合性を設定できた時点で、リレーションテーブル側には主テーブルにないレコードは無いということだと思うのですが・・・。 よくわからなくなってしまいました。 お答え、よろしくお願いいたします。

  • Access2000 リレーションについて

    現在初歩の初歩からAccessの勉強中です。 リレーションが何の為にあるのか、設定するのかはよく分かるのですが、内部結合・外部結合や1対多・1対1などがよく分かりません。 ここで全てを教えていただくわけには行かないと思いますが、本などをいくつか読んでもいまいちピンときません。 具体的にどういうケースでどのように設定するのかも分かりません。 どなたかご教授頂けませんでしょうか? 分かりやすい書籍・ホームページのご紹介でも結構です。 よろしくお願い致します。

  • Access2000 / 「レコードを追加できません」

    こんにちは Access2000で困っております。 簡単にいいますと、フォーム上から日付/時刻型のデータを入力しようとしても 「レコードを追加できません、テーブル’T外部集計警備’の結合キーがレコードセットにありません。」と表示されうまく入りません。 テーブルの構成ですが、 ★が主キー (1)T現場台帳 ★NO(オートナンバー型) 現場記号(テキスト型) ・ ・ 省略 (2)T外部集計警備 ★NO(オートナンバー型) 現場記号(テキスト型) 警備依頼日付(日付/時刻型) 警備会社ID(数値型) 集計人数(数値型) (3)T警備会社 ★警備会社ID 警備会社名(テキスト型) ・ ・ 省略 上記テーブルはリレーションがかかっており、 (1)T現場台帳.現場記号(テキスト型)----(2)T外部集計警備.現場記号(テキスト型) (2)T外部集計警備.警備会社ID(数値型)---(3)T警備会社.★警備会社ID それぞれ、参照整合性のついたリレーションです。 更にこれらをまとめるために、Q警備会社集計クエリ(選択クエリ)をつくりフォームに利用しています。 Q警備会社集計クエリの構成 T現場台帳.担当者ID T外部集計警備.警備依頼日付 T外部集計経緯日.警備会社ID T警備会社.警備会社名 T外部集計警備.集計人数 (並べ替えや絞込みは、なし) この「Q警備会社集計クエリ」を使って フォームからウイザードを使用してフォームを作成し、警備依頼日付を入力しようとすると「レコードを追加できません、テーブル’T外部集計警備’の結合キーがレコードセットにありません。」と表示されます。 どなたか、Accessの痒いところまで手の届く方、お助けください。

  • ACCESS 1つのフォームに2つのリレーション

    ふさわしいタイトルが思いつかず、「ACCESS 1つのフォームに2つのリレーション」というタイトルにしてしまいましたが、 タイトルと質問内容が食い違っていましたらすみません。 ペット(熱帯魚)の交配、繁殖をしており、今まではノートに交配記録をつけていたのですが、 ちょっと記録が複雑になってきたのでACCESSでデータベースを作ろうと思って試作でいろいろ試しています。 ACCESSでは簡単な顧客ファイル程度のことは作れるつもりです。 環境は、Win7、ACCESS2010です。 テーブル構成は ◆T_品種マスター  ・品種ID  ・品種名 ◆T_ラインマスター(血統の管理用)  ・ラインID  ・品種名(T_品種マスターよりルックアップ)  ・品種記号(A1、A2、B3など血統により重複のない記号をテキストで格納)  ・飼育開始日  ・  ・  ・ ◆T_交配マスター(どのペアで交配したか)  ・交配ID  ・交配日  ・オス親ID(現状手入力でT_ラインマスターのラインIDを入力)  ・メス親ID(現状手入力でT_ラインマスターのラインIDを入力) ●F_新規交配(★このフォームを完成させたい) テーブルソースはT_交配マスターです。  ・交配ID(オート)  ・交配日  ・オス親ID(現状はT_ラインマスターよりオス親に使用した魚のラインIDを入力)  ・オス親品種名(フィールドを追加してリレーションの設定をしてオス親IDを入力したときに品種名を表示したい)  ・メス親ID(オスと同じ)  ・メス親品種名(オスと同じ) というテーブル構成、フォーム構成です。 今頭を抱えているのは、 T_交配マスターをもとにしたフォームウィザードで「F_新規交配」というフォームを作りました。 ちょっと発展させて、「オス親ID」に交配に使用したオス親のラインIDを入力したときに、 その品種名を表示させるために、ACCESSメニューの「デザイン」-「既存のフィールドの追加」- 「すべてのフィールドの追加」-「他のテーブルで利用可能なフィールド」-「T_ラインマスター」の 「品種名」をフォームにドラッグしました。 その際、「リレーションシップの指定」ダイアログが出るので、 T_ラインマスターの「ラインID」とT_交配マスターの「オスID」を関連づけました。 この状態では、問題なくオス親IDにラインIDを入力すると、品種名が表示されています。 次に「メス親ID」に交配に使用したメス親のラインIDを入力したときにも同じことをしようと、 同じように、もう一つフィールドリストより「品種名」フィールドを追加しました。 当たり前ですが、オス親IDを入力すると、オス親用に用意した品種名フィールド、メス親用に用意した品種名フィールドに同じ内容が表示されてしまいます。 ●説明が長く、わかりにくくなってしまいましたが、やりたいことは、 オス親IDにオス親に使ったライン(血統)のラインIDを入力したときはその品種名が、 メス親入力したときにはメス親の品種名がそれぞれのフィールドに表示させたいと思います。 アドバイスよろしくお願いします。

  • Access2007 「レコードを追加できません」

    Access2007で困っております。 フォーム上からテキスト型のデータを入力しようとしても 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されうまく入りません。 【テーブル構成】 ★が主キー (1)T_アルバム ★アルバムID テキスト型 アルバム名 テキスト型 ジャンルID テキスト型 ソースID テキスト型 アーティストID テキスト型 (2)T_曲目 ★曲ID テキスト型 曲名 テキスト型 トラックNo テキスト型 アルバムID テキスト型 (3)MT_アーティスト ★アーティストID テキスト型 アーティスト名 テキスト型 (4)MT_ジャンル ★ジャンルID テキスト型 ジャンル名 テキスト型 (5)MT_ソース ★ソースID テキスト型 ソース名 テキスト型 【リレーション】 ※いずれも参照整合性付き (1)T_アルバム アルバムID --- (2)T_曲目 アルバムID (1)T_アルバム アーティストID --- (3)MT_アーティスト アーティストID (1)T_アルバム ジャンルID --- (4)MT_ジャンル ジャンルID (1)T_アルバム ソースID --- (5)MT_ソース ソースID フォーム作成のために「Q_アルバム情報入力」をつくりました。 アルバムID T_アルバム アルバム名 T_アルバム アーティストID MT_アーティスト アーティスト名 MT_アーティスト ジャンルID MT_ジャンル ジャンル名 MT_ジャンル ソースID MT_ソース ソース名 MT_ソース この「Q_アルバム情報入力」を使って、フォームウィザードからフォームを作成し、 アルバムIDやアルバム名を入力しようとすると 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されます。 他のフィールドは値が入力できますが、これら2つのフィールドのみ入力できません。 なお、各テーブルのフィールドには予めデータが入っている状態です。 宜しくお願い致します。

  • このリレーションシップを作成して、参照整合性を設定

     Access2007で、このリレーションシップを作成して、参照整合性を設定できません。   手っ取り早いので、問題にAccessデータが以下のURLからとれるようにしました。  http://homepage3.nifty.com/mtaiyo/sanseyou.accdb  以上Accessのsanseyou.accdbファイルを元にして、 以下の設定項目を実行してください。    テーブル「T得意先マスター」とテーブル「T売上げデータ」の間にリレーションシップを設定します。    「T得意先マスター」の「得意先CD」を「T売上データ」の「得意先CD」までドラッグします。  ≪参照整合性≫のにチェック マーク記号を入れます。 ≪作成≫をクリックする。・・と以下のエラー表示がでて先に進みません。 「 ’T売り上げデータテーブルのデータが参照整合性の規則に違反しています。  たとえば、ある社員に関する売るレコードがリネーション テーブルにあるときに、この社員に関する レコードが主テーブルにありません。    リレーション テーブルのすべてのレコードのデータについていて、関連するレコードが主テーブルにあるようにしてください。  参照整合性の規則に従わないでリレーションシップを作成するときは、[参照整合性]チェックボックスを オフにしてください。」  FOM出版 SETP1 「リレーションシップを設定する」  の項目の、別な設定でも、同じエラーがでたので、最初からエクセルを再イポートしたら無くなりました。   次の設定にかかったところ又でたので、そもそもどこをどうすれば回避できますか!?  以上宜しくお願いいたします。  

  • Accessのリレーションシップ

    Access初心者です。 Access2010でデータベースを作っていて、行き詰ってしまいました。 テーブル1にフィールドABCDEFがあって、Aに主キーが付いています。(Aはテキスト型でフィールドサイズ10です。) テーブル2にはフィールドAGHがあり、Aに主キーが付いてます。(Aはテーブル1と同じです。) テーブル3にも同じくフィールドAIJがあり、Aに主キーが付いています。(Aはテーブル1と同じです。) テーブル1のフィールドAを主テーブルとし、テーブル2・3のフィールドAにリレーションを組んでいます。 この時のリレーションシップで参照整合性と連鎖更新と連鎖削除にチェックを入れ、種類が一対一になりました。 その後、テーブル1でレコードを追加しようとすると、「テーブル'2'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

  • Accessリレーションシップについて

    お世話になります。 Access2010 普段はクエリにて、いくつかのテーブルやクエリを紐づけているのですが リレーションシップの設定は今までやったことがありません。 ネットで調べて、 ・「参照整合性」にチェックを入れることにより、1対多の多側で1側に存在  しないIDで登録しようとするとエラーになる。   →間違ったデータが入力されるのを防ぐ。 ・多側でリレーションシップが設定されているフィールドに値を入力しない  ことは可能。但し、当該フィールドの「値要求」プロパティを"はい"に  した場合は、入力しないとエラーになる。 ・「フィールドの連鎖更新」にチェックを入れると、1側で変更したものが  多側でも自動的に変更される。 ・「レコードの連鎖削除」にチェックを入れると、1側で削除した場合、  多側で該当するデータをもつレコードが自動的に削除される。 上記については実際に試してみて動きを確認しました。 ※上記の認識違いや、もっと大事なことがあればご指摘、ご教示頂けると  幸いです。 今までは、こっちのテーブルで削除したらこっちのテーブルでも削除 みたいなことをやってたので、便利だとは思うのですが。。 以下のテーブルでリレーションシップの設定を行ったとします。 売上テーブル  ID 商品 担当者コード  1 AAAAA  3  2 BBBBB  1  3 AAAAA  1  4 CCCCC  2  5 CCCCC  3 担当者テーブル 担当者コード 担当者名  1     担当者A  2     担当者B  3     担当者C 売上テーブルの担当者コードと、担当者テーブルの 担当者コードでリレーションの設定を行い、「参照整合性」及び 「レコードの連鎖削除」にチェックを入れたとします。 例えばフォーム上にリストボックスを設置し ID 商品 担当者名 を表示し、リストボックス上で選択されたレコードを、削除ボタンを 押したら、そのレコードが削除されるプログラムを作成します。 ※選択されたレコードのIDを取得し削除クエリで削除。 リストボックスでID:5のレコードを選択し、削除ボタンを押した場合 売上テーブルのID:5のレコードを削除しても、担当者テーブルから 担当者コード:3のレコードは削除されない・・という認識でよろしい でしょうか。 ※要するに、1対多の多側で削除されても1側には影響無し。 同様にリストボックスでID:5のレコードを選択し、削除ボタンを押したときに 担当者コード:3を取得し、まずは担当者テーブルで担当者コード:3の レコードを削除すると、併せて売上テーブルのID:1及びID:5が削除 される。 要するに、上記のケースで「レコードの連鎖削除」の設定を行うと 本来削除すべきID:5以外のレコード(ID:1)まで削除されてしまう ことになる?? ※そもそも例がちょっと悪かったかもしれません。。 何が言いたいかというと、「フィールドの連鎖更新」「レコードの 連鎖削除」は、よーく考えて設定しないと意図しないところまで 更新されたり削除されてしまうのかなと。。なので、設定することに よって、プログラムの作りも変わってきてしまうことになるので しょうか。 理解不足で質問自体もモヤモヤしたものになってしまいましたが、 ご教示のほど、宜しくお願い致します。

専門家に質問してみよう