• ベストアンサー

アクセス:関連ビューの再結合

テーブルとクエリがあります。テーブルの不具合で一旦削除せざるを得ませんでした。削除後同じ名前で再作成しましたが、今までたくさんクエリで結ばれていて、「テーブルと関連ビュー」として同じ場所に表示されていたクエリが、「関連付けられていないオブジェクト」の下に表示されています。 これらを一発で再度関連するテーブルと同じ場所に表示する方法はありませんか。 いちいちクエリを開いて保存を繰り返せば再度関連付けられることは分かったのですが、数が多いので別の方法をと思っています。

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

>これが一度テーブルを削除した後、全く同じテーブルを作成してもグルーピングされません。 ここで「グルーピング」とは1対N結合のことですか テーブルを削除すると、削除したテーブルのリレーションシップは全て解消します。 テーブルを再作成しただけではリレーションシップは復活しません。 以下の手順でリレーションシップを再構築してください。 【データベースツールリボン】➡【リレーションシップ】 ➡【リレーションシップ内の空白部分を右クリック】➡【テーブルの表示】 ➡【再作成したテーブルとクエリ】➡【追加】➡【閉じる】 ➡【テーブルとクエリの該当のフィールドをドラッグで結ぶ➡【結合の種類】 ➡【OK】➡【作成】 ※結合の種類には1対N結合の他2種類の3種類があります種類を選ぶと説明が表示されます。

ticktak
質問者

お礼

ありがとうございます。 リレーションシップのことが理解できていないようです。 勉強してから再度トライしてみます。

その他の回答 (3)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.4

> オフの状態からオンにすると が味噌です。 一旦オフにしてオプションを閉じる。 もう1度、オンにする、 です。

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

オプションの「名前の自動修正」をオフの状態からオンにすると 移動するようです。 レポート等で副作用があるかかもしれません。 コピーのDBでテストしてみることをお勧めします。

ticktak
質問者

お礼

ありがとうございます。 既にオンになっていました。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.1

勝手な憶測で的外れかもしれませんが 関連付けとはリレーションシップのことですね 添付図の上段は食事履歴テーブルと食事履歴明細テーブルが 食事履歴.IDと食事履歴明細.食事履歴IDで関連付けされています。 ここで食事履歴のIDだけを変更するとテーブル間の関連付けが断ち切られてしまいます。 以後この添付テーブルで説明します 先ず食事履歴と食事履歴明細の複製をコピペで作成 食事履歴のコピーと食事履歴明細のコピー 「添付のテーブルは何れも主キーのIDはオートナンバー形式です 食事履歴のコピー 1.食事履歴の主キーのフィールド名とデータ型をID旧、数値型に変更 2.ID旧のインデックスを重複無しに設定 3.IDをオートナンバー形式でフィールドを追加し主キー設定  これでIDには自動的に連番が生成されます 食事履歴明細のコピー 4.食事履歴IDを食事履歴ID旧と改名 5.食事履歴IDのフィールドを追加 6.食事履歴テーブル.IDと食事履歴明細テーブル.食事明細IDを関連付け 更新クエリーを作成 7.なにかのボックスに次の更新クエリーを貼り付けます。 Private Sub 主キー再定義_Click() DoCmd.RunSQL ("UPDATE [食事履歴 のコピー] INNER JOIN [食事履歴明細 のコピー] ON [食事履歴 のコピー].[ID旧] = [食事履歴明細 のコピー].[食事履歴旧ID] SET [食事履歴明細 のコピー].食事履歴ID = [食事履歴 のコピー].[ID];") End Sub 8.それぞれのテーブルからID旧と食事履歴旧IDを除去します

ticktak
質問者

お礼

丁寧に説明頂きましたが、そうではありません。 うまく説明できていなかったことお詫びします。 テーブルとクエリでリレーションシップで結んだ場合、オブジェクトを並び替えたりするところで、「カテゴリ」-「テーブルと関連ビュー」を実行すると関連するテーブルとクエリがグルーピングされますよね。これが一度テーブルを削除した後、全く同じテーブルを作成してもグルーピングされません。しかしもう一度ひとつひとつのクエリを事項することで関係が戻るのですが、全てのテーブルとクエリをグルーピングを一度に出来る機能がないかという質問でした。