• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessのフォームについて教えてください。)

Accessのフォームについて教えてください。

このQ&Aのポイント
  • アクセス入門者がフォームについて理解できない状況にあります。彼はテーブルから必要な項目を集めたクエリを作成し、それを元にフォームを作成しました。
  • しかし、フォームには入力ができないため、別の方法を試しました。彼はデータを追加するためにサブフォームを使用しましたが、それでも追加できませんでした。
  • 彼は複数のテーブルからデータを取得し、更新することができる方法についても疑問を持っています。彼はクエリまで進んだのに、フォームでつまずいて苦しんでいます。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

>テーブルは細分化したほうが良い 「場合による」としか言えません。「正規化」と言いますが、 あくまで、目安です。実際のニーズによっては「正規化」を 崩す必要があることも想定されますし、実例も多くあります。 >1つのフォームで色々なテーブルに結果を反映できるように 難しいし、やるべきではありません。ハッキリと言えます。 >主キーなしでただつなげただけ n:nの組み合わせで、重複が生じます。 ただ、主キーでなくても重複の無いインデックスを設定した項目の 結合であれば、1:1あるいは1:nになることもあります。 前にも回答しましたが、1:nの組み合わせでは1側のテーブルしか 更新できません。 さっと見ただけですが、次のようにすべきです。 (1)コードマスターは廃止する。 (2)1マスタ:1フォームにする。 (3)売り上げ計画、売上げ結果をマスタと呼ぶのは止める。これも   1テーブル:1フォームにする。 (4)1テーブル:1フォームは更新対象で、例えば売り上げ計画が   参照するであろう顧客コードは顧客マスタを参照すべきです。

mugigohan
質問者

お礼

色々とご教授いただきありがとうございました。 ごちゃごちゃしていたリレーションシップも「コードマスター」を他のテーブルに吸収させることによってすっきりしました。 テーブルの細分化もほどほどにしないとリレーションは見づらいし、フォームも数が増えてしまうので更新しづらくなるということが判りました。 必要項目がたくさんあってもテーブルはあまり増やさないように設計していきます。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

元になるクエリが更新可能でないか、フォームが入力可能でないかの いずれかです。おそらく前者でしょう。 クエリをデータシートビューで開いて、右向き▲に*の移動ボタンが 使用可能でなければ参照のみです。 DBでは 1:1 か、1:nの1側の方しか変更できません。 結果的に1:1になることを知っていても、プライマリキー、あるいは 重複を許さないインデックスによる結合と言った物理的制約が求め られます。××マスタとあるので、ここが主体になるように設計する べきで、「コードマスター」があるため、他のマスタは全て1:nの n側、つまり、更新できない側になってしまうのです。 何のために置いたのですか?コレさえなければ1テーブル:1フォーム となって、必ず更新可能になるんですけどね。

mugigohan
質問者

補足

★コードマスタの主キーで▲売り上げ計画マスタと◎売上げ結果マスタ をつなげています。 ★コードマスタのに担当者や客先情報を入力するように考えていました。 正規化を行って、テーブルは細分化したほうが良いと思っていたのですが、フォームにからの入力を考えた場合、あまり細分化しないほうが良いのでしょうか。 それと以前、運用されているアクセスを見たときにテーブルに主キーの設定がしていないことがありました。 主キーを設定して、1対多のリレーションを組んだ場合と、主キーなしでただつなげただけと結果はどのように違うのでしょうか。 色々と疑問だらけで申し訳ありません。 宜しくお願い致します。

関連するQ&A