• ベストアンサー

Accessの構造について

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

  • sskj
  • お礼率24% (75/303)

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

  • ベストアンサー
  • 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
質問者

補足

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

関連するQ&A

  • Access を用いた DB の構造

    Access 2007 で database を作ろうとしていますが、構造を考えていてこんがらがってしまいました。 具体的には、輸入の船積みのデータを管理したいのですが、船積は各サプライヤーから送られ、米国とメキシコの国境にある倉庫に一時保管されます。これらの船積から逐次いくつか選び、トラックにて簡易通関がされ、国境通過となります(つまり、トラック 1台に就き複数の shipment が該当します)。更に、週にいくつかあるこれらトラックの国境通過に対し、毎週確定の通関手続きがなされます。 Shipment に対し、supplier や商品データのテーブルからデータを拾うのは問題ないのですが、複数の shipment をどう「国境通過」(或いはトラックオーダー)にまとめるか、また、更に確定の通関手続きにどのように複数の「国境通過」を関連付けるか(具体的にどのようなフォームやクエリを使い、入力や管理をするか)判らなくなりました。 皆さんであればどのようにデータベースを構築されますか。また、データベースが効率よく機能(入力・閲覧・印刷など)出来るようにする為には、どのようなクエリやフォームを使われますか。 データベースに就いては殆ど初心者なので分かりやすく解説頂ければ幸甚です。

  • ACCESS2003 フォーム作成方法について

    はじめまして。初歩的な質問で申し訳ございませんが、よろしくお願いいたします。 現在ACCESS2003を独学で勉強しているところなのですが、 (1)テーブルから直接フォームを作成 (2)テーブルからクエリを作成し、そのクエリを元にフォームを作成 という2パターンのやり方がありますよね。 (1)の方法でも2つ以上のテーブルデータを取得できますし、 わざわざ面倒な(2)の方法でやるという理由が全く分かりません・・ きっと上級者になると理解もできるのかもしれませんが、 今の私には全くもって「?」なのです・・・ どなたか違いについて教えて頂けませんでしょうか。 よろしくお願いいたします。

  • ACCESS 選択クエリについて

    いつもお世話になっております。 確認したいことがあります。 選択クエリはテーブルを元に作成することは分かりました。 フォームを選択クエリを元に作成し、 フォームから項目を更新した場合にテーブルも更新しまよね。 これは、元のテーブルの項目がフォームの項目と直結していると理解していいのでしょうか?

  • accessのクエリとフォームの関係についてお尋ねします。

    accessのクエリとフォームの関係についてお尋ねします。 IDを主キーとした同じような構造のテーブルを3つ繋いでクエリを作成し、更にそのクエリをレコードソースとしたフォームを作成しました。 ところがフォームが動かない。テキストボックスを3つ作っていますが、何も表示してないし、レコードも移動しません。 まいった。 accessは2003、vistaを使っております。 素人です。よろしくご教授くださいませ。

  • ACCESS教えてください!

    宜しくお願いします。ACCESS勉強中の初心者です。 ACCESSのクエリで抽出をし、テーブル作成という機能があると思いますが、このテーブル作成をフォーム上で再クエリするにはどのようにすればよいのか教えてください! 宜しくお願いします。

  • Access、検索用フォームでのあいまいな検索

    現在、Accessでデータベース作成をしています。 テーブル:  ・テーブルA          ・テーブルB          (A・B間にリレーションシップ設定) クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成) フォーム   ・検索用フォーム(デザインビューでフォーム作成より)          ・検索結果フォーム(検索クエリを元に作成) また、以下のような設定を入力しました。 「検索クエリ」の抽出欄  Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1)  ※検索したい項目、すべての抽出欄に設定済 「検索用フォーム」  検索実行ボタンを作成し、マクロを設定  ・フォームを開く→「検索結果フォーム」  ・フィルタ→「検索クエリ」 上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。 ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも (1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。 2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか?? ご存知の方、ぜひ教えてください。 よろしくお願いいたします。

  • アクセス2000について

    アクセス2000でデータベースを作成しています。 幾つかのテーブルをリンクさせて、リンクしたテーブルからフィールドを選択してクエリを作り、そのクエリに基づいて単票形式のフォームを作成しました。 単票フォームの基になっているクエリを使って、表形式のフォームをオートフォームウィザードで作成しようとすると、「インデックスが有効範囲にありません。」というメッセージが出てきてフォームが作成できません。 どうしたらいいのでしょうか?誰か教えてください。

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

    こんばんは。アクセス入門者です。 入門書やできるシリーズなどいくつかのアクセスの本を見たのですが、 フォームについて、理解できません。 ●担当者マスタ ■客先マスタ ★コードマスタ ▲売り上げ計画マスタ ◎売上げ結果マスタ テーブルを作り、それぞれのテーブルから必要な項目を集めて、クエリを作成しました。思ったとおりの結果になったので、これを元にフォームを作成しました。 思ったとおりの結果が表示されるのですが、このフォームに入力が出来ません。できなかったので、次の方法を試しました。 ★コードマスタと▲売り上げ計画マスタのデータをサブフォームに配置しデータを追加させようと思って、あらたにフォームを作りました。やはり、思ったとおりの表示はされるのですが、追加ができないのです。それぞれのテーブルには、★コードマスタを主にそれぞれ、一対多にリレーションを組んでいます。 1つのフォームで色々なテーブルに結果を反映できるように、参照整合性の更新、削除にもチェックを入れました。 この考えは間違っているのでしょうか。 ○○マスタとあるように、それぞれ1つのテーブルに1つのフォームにしなければならないのでしょうか。 複数のテーブルから取り出したデータの更新は無理なのでしょうか。 ある程度、クエリまで完成したのにフォームでつまずいて苦しんでいます。ご解答宜しくお願い致します。

  • Accessのフォーム

    Access2003を使用しています。 テーブルまたはクエリを元に作成したフォームにはテーブル・クエリに入力されているデータが表示されますよね? それらのデータをフォームから変更出来ないようにする方法はありますか? データ自体を非表示(入力用フォーム)にするのではなく、既存のデータは表示されるけど変更は出来ないという状態にしたいです。 ちなみに新規入力は行えるようにしておきたいです。 よろしくお願いします。

  • ACCESS2013を学びたい

    ACCESSを人並み程度には操作できるようになりたいと考えています。 「Access入門&使い方講座」というサイトを読んで、テーブル、クエリ、フォームとは何か?が言葉上では理解できたかどうか程度の知識です。 実際、自分の作りたいデータベースがあったとして、それをどう定義するか(テーブルの種類やどのテーブルにどんなフィールドを持たせるか)を決めるのが難しそうだと感じました。 エクセルを多用しているせいか、いざ自分がデータベースを作成しようとした時、1つのテーブルに全フィールドを入力してしまいそうです..テーブルを複数用意し、それをクエリで関連付けるところにアクセスの魅力があるのだと思いますが、その点は言葉では理解できても実際にはいまいち理解できていない気がします。 実際にやって覚えるのが手っ取り早く面白いと感じたので、自分の好きな株の四季報データを管理するデータベースの仕様を考えてみました。 前置きが長くなりましたが本題です。以下のようなデータベースを作成する上でのアドバイスを頂きたいです。(テーブルをいくつ作成し、どんなフィールドを持たせるかなど) ・会社毎に営業キャッシュ・フローと純利益と比較会社を管理するデータベース 特定の会社と、その会社の比較会社(複数あることを想定)の営業キャッシュ・フローと純利益を表示するデータベース テーブル:企業 会社コード←主キー 企業名 テーブル:四季報 会社コード←主キー 営業CF 純利益 比較会社(会社コードで管理) 漠然とこんな感じに2つのテーブルを定義し、クエリで上手く条件を抽出するといったイメージなのですが、クエリで条件をどう定義するかいまいち想像できません。 漠然と 会社コード(四季報T) 会社名(企業T) 営業CF(四季報T) 純利益(四季報T) /「どうにかして比較会社コードの企業名を引っ張る項目」×複数の比較会社名 上のようなクエリをイメージしています。最終的にはどうにかして、各会社の比較会社の営業CFと純利益が比較して見えやすいようなデータベースを考えているのですが 「どうにかして」の部分がまだ理解できていません。     

専門家に質問してみよう