• ベストアンサー

Accessのコンボボックスの使い方について

初心者です。 コンボボックスの使い方について教えて下さい。 商品テーブルA 商品名|コードA|コードB|コードC| マスターテーブル A|B|商品名|コードA|コードB|コードC|D|E のような2つのテーブルを作成し、マスターテーブルの「商品名」に コンボボックスで商品テーブルAの商品名を表示させるとします。 そこでコンボボックスで商品名を選択すると同時に 商品テーブルAからほかの「コードA」「コードB」「コードC」の値を マスターテーブルの「コードA」「コードB」「コードC」に入れる方法は ありますでしょうか? また、他の方法はありますでしょうか? 宜しくお願い致します。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

         商品テーブルA 商品名|コードA|コードB|コードC|  ↑_   |マスターテーブル A|B|商品名|D|E|    コードA|コードB|コードC|             コードA~Cは商品テーブルから このようなクエリを作成すれば マスターテーブルに、コードA~Cのフィールドを作らなくて済みます。 極力ダブったデータはテーブルに持たないのが基本原則ですがいかがでしょう? [ACC] データベースの正規化の基礎 http://support.microsoft.com/default.aspx?scid=kb;ja;100139 http://www.mahoutsukaino.com/ac/ac2002/ac2002/hajime/rdb.htm コンボボックスに関しては マスターテーブルの商品名のルックアップテーブルの値集合ソースに商品テーブルAを指定し 連結列    1 列数     4 列幅   2cm;2cm;2cm;2cm とかにすれば一覧が出てきますが、商品数が多くなった場合の事も考えると テーブルやクエリでの設定ではなく フォーム上で何がしかの設定を行うようにした方が後々メンテがしやすいように思えます。 この辺は個人的な好みの問題かもしれません・・ あと、主キーとして 商品テーブルA・マスターテーブルとも 商品ID 長整数型・マスターID 長整数型 などというものを設けたほうが良いように思えます。

tomsky
質問者

お礼

回答して頂きましてありがとうございます。 まだ、始めたばかりでどのようにデータベースを作成しようかと 悩んでいました。 大変参考になりました。 ありがとうございます。

その他の回答 (1)

noname#60992
noname#60992
回答No.2

RDBでは、(パフォーマンス上そのようなことをする場合もありますが)一般的に重複する項目を別テーブルに保存する必要はありません。  商品テーブルに 商品コード|商品名|商品データ1|商品データ2|.... と商品に関するデータをすべて作っておいてあれば マスターテーブルには商品コードさえ入れておけば、必要時にその商品コードに対応するデータは取り出せます。 それを行うのが、アクセスではクエリと呼ばれています。 クエリ上に両方のテーブルを表示させ、商品コードをリレーションシップで結び、表示させたい項目を選べばクエリが出来上がります。 このクエリを、コンボボックスのレコードソースとすれば、完成です。 上記クエリはを選択クエリとして作れば、商品を絞り込むこともできます。

tomsky
質問者

お礼

回答して頂きましてありがとうございます。 「クエリ」を利用するんですね。 今までエクセルで色々やっていたもので、アクセスにまだなれて いなくとまどっています。 参考になりました。 ありがとうございます。

関連するQ&A

  • Accessで2つのコンボボックスをリンクさせるには

    すごく簡単なことだとは思うのですが、わかりませんので教えてください。 フォーム上に2つのコンボボックスA,Bを作成します。 テーブル「商品マスタ」にある「商品名」をA、「商品コード」をBにそれぞれ値集合ソースとしてセットします。 このとき、A、Bのどちらで選んでも、他方のコンボボックススで選ばれた値に対応した値が、セットされるようにしたいのですが、どのようにすればよろしいのでしょうか? afterupadteイベントでそれぞれに「.defaultvalue = .Listindex」でうまくいくときがあるのですが、不安定の様に思えます。 以上、よろしくお願いします。

  • VBA コンボボックスの条件分岐

    コンボボックスの条件分岐のコードが間違っているみたいで 調べても分からなかったので質問します。 やりたいこと 『マスタ』という名前のシート内のセルを参照し マスタシートには C2セル『A』C3セル『B』C4セル『C』と それぞれアルファベットがあります。 そこでコンボボックスを使用し コンボボックス22にC2~C4セルを選択できるようにし 例えばC2セルを選択したら コンボボックス21の参照範囲をマスタシート内の D2~D13セルを選択できるようにし C3セルを選択したら コンボボックス21の参照範囲をマスタシート内の E2~E13セルを選択できるようにしたいのです。 すいませんがコードを記載して頂けますと 助かります。 Private Sub UserForm_Activate() '----------------------- With ComboBox22 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!C2:C4" End With '↑こうすればコンボボックス22のマスタシートのC2からC4まで値を選択できるようになります。 '------------------------わかりやすく区切っています。 '--------------------------------------- If UserForm1.ComboBox22 = "A" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!D2:D13" End With End If '↑コンボボックス22の値が(C2セルの値がAなら)コンボボックス21をマスタシートのD2からD13までを選択できるようにしたい If UserForm1.ComboBox22 = "B" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!E2:E13" End With End If '↑コンボボックス22の値が(C3セルの値がBなら)コンボボックス21をマスタシートのE2からE13までを選択できるようにしたい '----------------------------------------区切っています。 End Sub

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

  • コンボボックスで新規登録する場合

    こんにちはアクセス初心者です。 コンボボックスの扱いについて行き詰っています。 説明が下手ですがどうぞよろしくおねがいします フォームAで コンボAとコンボBの 2つのコンボボックスを連動しています コンボAで選んだ発注者名を選択して詳細項目を表示し、 その担当者をコンボBで絞込み 担当者の詳細情報を表示しています コンボAに項目がない場合、 別ウィンドウで入力フォームが開き 新規登録後、その値が即座に反映され、 コンボBにはその抽出された値が表示され、 更にコンボBに項目が無い場合も同様に 登録作業をしたいのですが どういう方法が一番いいのでしょうか? 一番の理想としては コンボAを選択すると A社 B社 C社 新規登録 というようなリストが表示され 新規登録を選択すると 別ウィンドウで登録フォーム開き 複数項目を入力、OKを押すとその内容が フォームAに反映され コンボBの選択へ。 コンボBには 田中 佐藤 新規登録 と表示されている状態が理想です コンボAで顧客コードを選択すると 他の内容を下記のように VBAでフォーム上のテキストボックスに反映させています Private Sub コンボA_AfterUpdate() Me!担当者名コンボ.Requery '内容反映 Me.〒 = Me.顧客名コンボ.Column(2) Me.現住所 = Me.顧客名コンボ.Column(3) Me.電話番号 = Me.顧客名コンボ.Column(4) コンボA SELECT 顧客マスタ.顧客コード, 顧客マスタ.顧客名, 顧客マスタ.〒, 顧客マスタ.現住所, 顧客マスタ.電話番号 FROM 顧客マスタ ORDER BY 顧客マスタ.顧客コード; コンボB SELECT 担当者マスタ.担当者コード, 担当者マスタ.担当者名, 担当者マスタ.携帯番号, 担当者マスタ.顧客コード FROM 担当者マスタ WHERE (((担当者マスタ.顧客コード)=[forms]![フォームA]![コンボA])) ORDER BY 担当者マスタ.担当者コード; 別ボタンで新規登録をつくり リストに無い場合はフォームを表示させ テーブルに保存させるという方法も試しましたが デザイン上の問題があって とても小さなスペースしかとれず、 コマンドボタンをおくスペースもとるのが難しい感じなので できればコンボボックスだけで解決したいのですが。。 どなかた教えていただけると助かります どうぞよろしくおねがいいたします

  • 困ってます!Accessフォームのコンボボックス

    初心者です。とーっても困っています・・・。 顧客データを登録しているのですが、テーブルを元に登録フォームを作成しました。 商品がたくさんあって、4つのコードに分かれています。フォームの中に[A][B][C][D]と4つのコンボボックスを作成し、絞込み検索ができるようにはしました。 が、しかし、選んだデータがテーブルに表示されません。例えば[A]のコンボボックスの中から[1010]を選択、テーブルを見ると、他のテキストボックスに入力した情報は保存されているけど、コンボで選んだデータは空白です。 誰か助けてください!!よろしくお願いします。

  • Accessのデータベースのコンボボックスの記載

    AccessのVBAのコンボボックスのデータベースのレコードの非表示の仕方と表示する値と取得する値を変える方法が知りたいです。 例えばSQL分でテーブルの中の商品コードカラムと商品名カラムを抽出し、値をコンボボックスに入れるとします。この時商品コードの方は値だけ持たせて非表示にし、商品名だけが表示されるようにしたいです。 そして表面上で商品名が選ばれた時、非表示の商品コードの値の方が選択されるようにしたいのですがどうコーディングしたらいいのかわからないです。 ネットでも調べてみましたがフォームで設定する方法しか見つけられませんでした。VBAで記載するようにとの指定があるのでVBAで記載するようにしたいです。 VBAではどのように書いたらいいのでしょうか

  • Access2003コンボボックスについて

    Access2003の勉強を始めたばかりの初心者です。 コンボボックスについて初歩的な事かもしれませんが、お教え下さい。 他のコンボボックスと連動するコンボボックスを作りたいと思っております。 具体的には、A・B・Cと3つのコンボボックスを作り、Aがブランクの状態ならB・Cブランク、Aに値が入ったらそれに伴った絞り込み結果をB・Cへ。 Bに値が入った場合は、その結果をCへ。 と言う様な処理を考えています。 用途はAに都道府県Bに市区町村Cに個人名を表示する予定です。 AからB・Cの連動は出来たのですが、あの値を反映したBからCへの連動処理ができません。 どなたかご存知方いらっしゃいましたら、ご教授お願い致します。

  • access コンボボックスの次

    顧客管理・商品管理の簡略化を目指している初心者です。商品マスター・仕入先・販売先というテーブルを作成、商品情報の入力・閲覧のためのフォームを作ろうと思っています。 1)商品マスターテーブルには、仕入先コードと販売先コードが入っています。フォーム上では仕入先名・販売先名も確認したいのですが、 「商品マスターテーブルにそれらを追加したクエリを作成 → クエリからフォームを作成」 という方法でよいでしょうか。 2)フォーム上で仕入先コードと仕入先名のコンボボックスを設置します。コードを選択すると自動的に次の欄に仕入先名が反映されるようにする方法を教えてください。 おそらく非常に初歩的な質問かと思いますが、マニュアルを見たり検索をかけたりしても要領を得ません。アドバイスをどうぞよろしくお願いいたします。

  • vb6のコンボボックスの操作について

    おはようございます。 vb6+MDBの環境下で、コンボボックスについて質問です。 マスタとなるテーブルA(都道府県など)と、一般的(?)なデータを日々貯めていくテーブルBがあり、 Bに、Aのキーとなる値が保存されています。 テーブルデータBの表示・更新画面を作っているのですが、 テーブルAの内容を画面上のコンボボックスに選択項目としてADDして表示するところまでは出来たのですが、以下のことを実現するには、コンボボックスにどういう記述で実現するのかわかりません。 1.テーブルBに持っているAの都道府県コードに該当する項目を、Bのデータ選択時に表示したい。 【テーブルA】 Aのキーコード,都道府県名 【テーブルB】 Bのキーコード,Aのキーコード,住所… このような場合、イベント時にコンボボックスをどのように処理するようにソースを書けば実現できますか?

  • access2003コンボボックスの質問です

    Access2003+sql2005で コンボボックスのテーブルに顧客マスタ(顧客コード+顧客名)を値集合にセットしています。 最大レコード件数を10万にしているのですが、中身はちょうど1万件しか入ってきません。 コンボボックスは1万件が最大なのでしょうか? ご存知の方、教えて下さい。

専門家に質問してみよう