• ベストアンサー

Accessのリレーションシップウインドウに奇妙な現象が・・助けてください(TT)

「依頼2テーブル」と「担当者テーブル」という2つのテーブルを作っています。「依頼テーブル2」の名前に2があるのはあまり意味はありません。 「担当者テーブル」の「担当者No.」フィールドを主キーにし「依頼テーブル2」にも「担当者No.」を作成しリレーションを貼ろうとしているのですが、奇妙なことになってまして・・・・ 現象1 「ツール」→「リレーションシップ」でリレーションシップウインドウを開くとテーブル名が表示されますが、「担当者テーブル」と「依頼テーブル2_1」と表示される。 現象2 現象1をなんとなく気持ち悪がりながらも「担当者No.」を結合フィールドとしてリレーションを貼り、参照整合性も設定するとエラーもなく設定でき「担当者テーブル」が親、「依頼テーブル2_1」が子であることを示す線がちゃんと表示される。 現象3 現象2もかなり気持ち悪いと思いながらも、「上書き保存」をするが、再度リレーショナルシップウインドウを表示するとリレーションシップが解除されている。(結合を示す線が消えている) 現象4 もう、オカルトな気分満点な状態のままリレーションシップウインドウで右クリックし「全てのリレーションシップを表示」を選択すると「担当者テーブル1」~「担当者テーブル10」と「依頼テーブル2」が表示され、「担当者テーブル」、「担当者テーブル1」~「担当者テーブル10」の11個のテーブルと「依頼テーブル2」が「担当者NO.」を結合フィールドにして全てリレーションシップが貼られている 以上のような状態になっています。作成したテーブルは2つだけなのにこんなことが起こるんでしょうか? また、自宅PCと会社のPCで同じファイルを操作していますが、現象は変りません・・・・ ご存知の方・・・助けてください~!!!

  • MRD
  • お礼率25% (42/168)

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

  • ベストアンサー
noname#64217
noname#64217
回答No.4

Accessのリレーション設定でよくあるトラブルです。 簡単になおりますよ。 以下が手順です 1.リレーションシップウィンドウを表示する。 2.右クリックをして「すべてのリレーションを表示」を選ぶ。 いっぱい表示されませんか? 3.表示された結合線を右クリックして「削除」を選ぶ。 この作業を繰り返して、すべて削除してください。 4.閉じる。保存を聞いてきたら「はい」を選ぶ。 これでリレーションはリセットされていますので、もう1度リレーション設定を行ってください。 この原因は、リレーションシップウィンドウを閉じる時の保存のメッセージにあります。 よく見ると「レイアウトを保存しますか?」って聞いてきますよね。 リレーションの操作は、操作をした直後に自動保存されています。 メッセージはリレーションを保存するか?ではなく、 レイアウトを保存するか?です。 ここが分かりにくく、色んな操作を行うことで、オカルトっぽくなります。 上記の作業をすれば直りますので、大丈夫ですよ。

MRD
質問者

補足

皆さんありがとうございます。 問題は解決しました(^^) また、よろしくお願いします

その他の回答 (3)

  • yamutya
  • ベストアンサー率15% (3/20)
回答No.3

同じテーブルをリレーションに二度繰り返し表示するとテーブル名の後ろに_1とつきます。きっと二つ同じテーブルを表示して最初に表示したノーマルな方のテーブルを削除してしまったためと思われます。 リレーションの図からテーブルの表示を一度削除して(元のテーブルを削除するのではありません念のため)再度 リレーションの図の中に貼り付ければきっとうまくいくと思います。

noname#7099
noname#7099
回答No.2

現象1 リレーションを作成するとき、依頼テーブル2を2回追加したためです。 1個目は「依頼テーブル」ですが、2個目は「依頼テーブル2_2」、3個めは「依頼テーブル2_3」となります。 これは、受付担当者NOと営業担当者NOなど、複数のコードが同一のテーブルを参照する場合がありえるからです。アクセスの普通の仕様です。 気持ちが悪い、なら、依頼テーブル2を全部削除して、リレーションをつなぎなおしてもいいですが、誤りではないので、そこまでする必要はないと思います。 現象2 誤りではありませんし、正確なリンクができているので、問題ありません。 現象3 全部のリンクを表示すれば、見えると思いますよ。 現象4 うーん。リンク見えないから、って貼りなおし、いっぱいしましたね。。。 同じファイルに同じリンクいっぱい貼ってもしょうがないので、全部のリンクを表示したときに、要らないファイル名を削除して、「上書き保存」したらいいと思いますよ。 一回全部消して、保存して、 再び全て表示して、全部削除できているのを確認してから、 もう一度、リンク貼りなおしたら、すっきりするのではないでしょうか? 「幽霊の正体みたり、枯れ尾花」と思っていただければ幸いです。

回答No.1

現象1について: リレーションウインドウに既に依頼テーブル2があったんですよ。ただそれだけのことです。 上下左右にスクロールすれば隠れていた依頼テーブル2が 出てくると思いますよ。 現象2以降も同じような理由でしょう。

関連するQ&A

  • Access2000のリレーションシップのエラーについて

    どのくらい説明すればいいのかわからないのですが、アクセス2000でリレーションシップの設定をするときに、 「主テーブルで参照されているフィールド用の固有インデックスがありません。」 というエラーメッセージが出てきてリレーションを作る事が出来ません。 問題なのは3つのテーブルのリレーションなのですが、それぞれのインデックスをチェックすればいいのだとは思いますが、対象となったフィールドは主キーではないので、重複は許可していますが、一応どちらもインデックスは作成しています。 どのようなリレーションシップかというと、業者テーブルと商品テーブルと販売履歴テーブルのリレーションで、 商品テーブルの業者IDと業者テーブルのIDのリレーション→左内部結合(商品テーブルの全フィールドに入れる) 業者テーブルの業者IDと販売履歴の業者IDのリレーション→右内部結合 は出来るのですが、商品テーブルの商品名と値段フィールドと、販売履歴の対応する部分についてのリレーションについてもたせようとするとエラーが出てしまいます。このようなリレーションはいらないのでしょうか? どちらも固有の値でない量のリレーションだからなのでしょうか? この二つのフィールドの参照整合性をどう保てばいいのか教えて下さい。

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

     Win XP Office 2003 Accessを勉強中です。  デザインビューでクエリを作成するときに、関連するテーブルを表示させると自動的に「結合プロパティ」の線が表示されますが、 この表示で自動的に「1対多」を表示する時としない時がありますが、これは何故でしょうか。  これはどこかから設定をしてやるのでしょうか。  また、同じような線としてメニュバーから「リレーションシップ」を表示させることが出来ますが、 内容的には「結合プロパティ」と同じものですが、これは「リレーションシップ」とはどのようなに使い分けるものでしょうか。

  • 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'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

  • ファイルメーカー8.0v1 リレーションシップ追加時のメッセージ

    お世話になります。 ファイルメーカー(FileMaker)8.0v1を使用しています。 データベースの定義から、リレーションシップを選択し、 新しいリレーションを追加しようとすると、 「グラフ内の2つのテーブルの間に複数のリレーショナルパスを指定することはできません。どちらかのテーブルを別の名前でグラフに追加する必要があります。」 と、表示されます。 これはどういうことなのでしょうか? このまま組むと、リレーションシップ上に名前が変わって作成されてしまいます。 テーブル自体が複数作成されているわけではないことは解りますが、 リレーションシップが見づらいです。 現在、1つのテーブルから、 複数のリレーショナルを組んでいるテーブルもあるのですが、 それはなぜ大丈夫なんでしょうか? よろしくお願いします。

  • access2003について

    質問1   テーブルで住所入力支援の設定をする。テーブルのデータシートビューで郵便番号を入力すると、都道府県や市区郡が自動で表示され、ちゃんと機能する。しかし、フォームで郵便番号を入力するとテーブルの郵便番号には数値が記載されるが、都道府県や市区郡など表示されないのは何故でしょうか。 質問2  テーブルのフィールドの一つを消したいのですが、「このフィールドにはリレーションシップが設定されています。このフィールドを削除するには、リレーションショップ ウィンドウで関連するリレーションシップを削除する必要があります。」と案内がでて削除できません。しかし、リレーションショップ ウィンドウで関連するリレーションを全部削除し、いまではリレーションらしいものはありません。どうすれば上記フィールドを消せるでしょうか・・・・ 皆様、お知恵をお貸しください!

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

    リレーションシップとクエリ内部結合の違いについて リレーションシップとクエリ内部結合(リレーションシップ)の違いは参照結合性や連鎖更新、連鎖消去設定の差だけでしょうか? データ型のオートナンバーは一度使用した番号はレコードデータを消去しても、二度と使えないのでしょうか? 任意の番号に指定しようすると、オートナンバー型のIDフィールドに連結されているため編集できません となります。

  • ACCESSのリレーションシップについての疑問

    ACCESS初心者です。 ACCESS2002 OSはWindowsXP SP2です。 基本が分かっていないせいなのかもしれませんが、私には理解できない現象が起こっています。対応方法があれば教えていただくようお願いします。 ACCESSでデータ更新のフォームを作っています。 そのフォームは2・3日前に作ったもので、たとえばテーブルAを更新するためにマスターテーブルのBとCを参照しているような形になっています。このリレーションはクエリで指定してあります。 このフォームではクエリに対して更新する形になっています。 このフォームのデザインを編集しているときに「ツール」の「リレーションシップ」をクリックすると画面にはBとCだけが表示されます。 なぜメインのテーブルのAが表示されないのか?と思いながら、しょうがないので右クリックして「すべてのリレーションシップの表示」を押すと、驚いたことにDのテーブルが表示されました。 実はこのDというテーブルは以前に作ったAを作る前に使っていたAによく似たテーブルなのです。 当然、以前にはDとB・Cのリレーションも作っていましたが、今編集中のフォームではDは関係ありません。 リレーションシップの画面は不必要に広大なもので横に3スクロール分と縦にも5スクロール分くらいあって、その右下の端っこにD・B・Cのリレーションだけが表示されていて、それ以外はただただスペースがあるだけです。 なぜ肝心のA・B・Cのリレーションが表示されずD・B・Cのリレーションが表示されるのでしょう? 試しに今では不要であるDのテーブルを削除してみましたがリレーションシップではさすがにDは消えたもののB・Cが表示されるだけで、Aは出てきません。 そもそもACCESSにおけるリレーションシップというのは個々のフォーム内で定義されるものではないのですね?(根本的なことで申し訳ないのですが、買った2冊の本を見てもインターネットで探してもその辺の説明が見当たりませんでした) SQLであれば個々のSQL文で都度JOIN等の記述をすると思うのですが、ACCESSではデータベース全体の共通事項(?)としての定義になるのでしょうか? ACCESSは初心者で見当はずれな質問かもしれませんがどうかよろしくお願いします。

  • 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)まで削除されてしまう ことになる?? ※そもそも例がちょっと悪かったかもしれません。。 何が言いたいかというと、「フィールドの連鎖更新」「レコードの 連鎖削除」は、よーく考えて設定しないと意図しないところまで 更新されたり削除されてしまうのかなと。。なので、設定することに よって、プログラムの作りも変わってきてしまうことになるので しょうか。 理解不足で質問自体もモヤモヤしたものになってしまいましたが、 ご教示のほど、宜しくお願い致します。

  • Access2002 参照整合性について

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

  • アクセスのリレーションシップとクエリ

    私は、アクセスの初心者です。なので、難しいことはよく分からないのですが、アクセスではある1つのフィールドをキーにしてくっつけたりすることができるじゃないですか?そのキーを設定したりするのはリレーションシップでも、クエリでも同じような感じで行うと思うのですが、その2つの違いはクエリはそれをテーブルとして表示できるのに対して、リレーションシップはただ定義するしかできずテーブルとして表示はできないのでしょうか? あと、クエリとかである条件で抽出したテーブルの1つのフィールドのSUMを出したいのですがどういった条件式を書けばいいのでしょうか? なにぶん、初心者ゆえに質問が分かりにくいと思いますが、どうかよろしくお願いします。

専門家に質問してみよう