• ベストアンサー

Accessの構造について

いくつかのテーブルを元にクエリを作成し そのクエリを元にフォームを作るのは分かるのですが 複数のクエリから一つのフォームは作成できないのでしょうか? Accessの総合編の解説書をほぼ全て読んだのですが 構造に関することが今一理解に苦しむ所です・・・。 テーブルを分割する必要性 これは管理し易くする為に、と言う事なんでしょうか?

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

> 複数のクエリから一つのフォームは作成できないのでしょうか? 可能です。 但し、その場合は、フォームの『レコードソース』は、テーブル名やクエリ名ではなく、SQL文になります。 (レコードソースを指定せずに新規フォームを作成した後、フォームのプロパティシートを表示させ、  『データ』タブの『レコードソース』にカーソルを移動し、右端に出る「...」(ビルダボタン)をクリックすると、  クエリのデザインビューと同じものが表示されます。  そこで複数のクエリとそのフィールドなどを追加し、編集を保存して閉じると、『レコードソース』の欄に、  デザインビューで編集した内容に相当するSQL文が表示されます) > テーブルを分割する必要性 『商品』テーブル  品名    種別 りんご   くだもの だいこん  やさい なし     くだもの みかん   くだもの にんじん  やさい 上記のようなデータを必要とする場合、以下のようにテーブルを分割しておくと、「入力できる種別を 種別テーブルにあるものに限定する」といったことが容易になります。 (コンボボックスを使用し、その『入力チェック』プロパティを「はい」に設定) 『商品R』テーブル:  品名   種別ID りんご     1  →(コンボボックスを使用して「くだもの」と表示) だいこん    2  →(コンボボックスを使用して「やさい」と表示) なし       1 みかん     1 にんじん    2 『種別』テーブル:  種別  種別ID(主キー) くだもの    1 やさい     2 また、「くだもの」「やさい」をそれぞれ漢字に統一するといった場合も、テーブルを上記のように分割して いれば、『種別』テーブルのレコード(→2件)を編集するだけで、『商品R』テーブルはいじらずにすみます。 (『商品』テーブル1つにまとめている場合は、そのテーブルの全レコード(→5件)を編集する必要がある:  単純な例を挙げているので、「置換」を行えばそれほど手間はかからない状態ですが・・・) さらに、上記のようにしておくと、比較的データサイズが大きい「テキスト型」のレコード数が減らせるため、 データが軽くなる(結果、動作も軽くなる)、という利点もあります。

sskj
質問者

お礼

分かりやすい説明ありがとうございます。 レコードソースに関することを、持っている解説書で探してみましたが載っていませんでした^^; > テーブルを分割する必要性 定形で決まっている物に関して使うと手間が省ける 分割する事でデータが軽くなると言う事ですね。

その他の回答 (2)

回答No.3

テーブルの構造のあり方については、とっつきにくくて、自分も良く理解できちゃいないんですが、データベース設計では最も大事な所だとも感じてます。  正規化について、わかりやすく解説したもの無いようですが、1つリンクを貼っときます。  リンクの例では最終的に顧客テーブルと商品テーブルができてますが、例えば商品名が変わった場合、商品テーブルを変更さえすれば、他のクエリに反映するのでメンテナンス性が高くなります。逆に正規化してないと該当の項目を検索・置換しないとならず、利用者に余分な知識を強いることにもなりかねません。  小規模なデータベースではメリットが感じにくいですが給与計算や税務計算など複雑になるほど正規化のありがたみが感じられると思います。

参考URL:
http://www.rfs.jp/sb/sql/01/05.html
  • ttk11
  • ベストアンサー率25% (40/154)
回答No.1

質問の詳細がよくわからないですが。。。 1つのフォームでは1つのテーブルもしくはクエリーだけしか 原則としてはつかえません 複数のテーブル内容を表示させる方法としては フォームの中にサブフォームを連結表示させる という手があります あとは コンボボックスにてテーブル内容の表示 または DOLOOKUP命令でテーブルの内容を持ってくる方法など。。。

sskj
質問者

補足

後者の方が酌みとって説明して下さいました。 もしフォームを完成させたあとで追加などをする場合 どのようにするか知りたかったのです。