こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESS2007コンボボックスについて

ACCESS2007で質問です。

コンボボックスを連動させて、入力を効率よくする方法を教えて頂きたいのです。

データとしては

テーブル 1
章  編
A AA
A BB
A CC
B DD
B EE
C FF

テーブル 2
編  分類
AA AAA
AA BBB
AA  CCC
BB DDD
CC EEE
CC FFF
CC GGG
DD HHH
EE I I I
FF JJJ

テーブル 3
分類 細目
AAA AAAA
BBB BBBB
BBB CCCC
BBB DDDD
CCC EEEE
CCC FFFF
DDD GGGG
EEE HHHH
FFF I I I I
GGG JJJJ
・・・・・

と、あとテーブルがいくつか続いて

テーブル X
条件X   数値情報
AAAAAA 1234
BBBBBB 2345
CCCCCC 9876
DDDDDD 1379
FFFFFF 8462
・・・・・・・

というツリー状の階層データで構成されます。
最終的にはテーブルXの右側の数字を拾っていく表を作成したいのです。
AAAAAA ~ FFFFFF 等に関する数値データについては最終的には数千になると思いますので、途中でツリーを追いながら入力したいと思っています。
(テーブル2や3でもいきなり20程度の分岐が発生するときもあるので・・・)

ネットや書籍で、「コンボボックスの連動」という制御が可能ということでしたので、色々やっております。
フォームにおいて、コンボボックスの1段目はウィザード等で簡単に作成できましたが、2段目が出来ません。
コンボボックスを作成後、プロパティシートの集合値ソースにDLOOKUPや、SELECTを用いた構文を作成すればよいのかと思うのですが、良い方法が分かりません。やりたい事がそのまま載っている本などもあるのですが、2007以前のバージョンだったりして、操作方法からしてよく分からないこともあります。
2段目が出来れば3、4段目も同じ要領だと思いますので、何とかなるかなと思っています。

ACCESSをいじり始めて10日程度の初心者で、用語自体も調べながらの状況ですが、よろしくお願いいたします。

投稿日時 - 2013-08-02 12:30:16

QNo.8202542

困ってます

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

ココで説明してもなかなか細部まで伝わりづらいのですが・・
(なんせ、ココは基本的に「文字だけで説明」しなきゃならないので(汗)。)

質問文中の「テーブル1」を例に取り、ザックリと「コンボボックスを使った絞込」の説明を。


まず、テーブル1を使って、「章」を選択するコンボボックスを作ります。
新規フォームを作成(仮に名前を[フォーム1]とします)し、
コンボボックスを配置します(名前は適宜、ココでは[コンボ1]とします)。
ウィザードはキャンセルし、値集合ソースを設定します。
プロパティシートの「値集合ソース」欄の右端、「...」風のボタンをクリック、
クエリビルダが起動したら、
テーブルの表示ダイアログから、[テーブル1]を追加し、閉じましょう。
ココからは集計クエリを作る要領で、リボンの「Σ」を押し、
フィールドに[章]を追加、グループ化する設定にして、クエリビルダを保存して閉じます。
フォームビューにしてコンボボックスをドロップダウン、「A・B・C」の選択肢が出たらOKです。

レイアウトビューに戻り、コンボボックスをもう一つ配置しましょう。
やはり、ウィザードはキャンセル、名前は仮に[コンボ2]にしておきます。
プロパティシートの値集合ソースでクエリビルダを起動し、
同様に[テーブル1]を追加、ダイアログを閉じます。
フィールドに[章]を追加、抽出条件に
    [forms]![テーブル1]![コンボ1]
と設定、同時に「表示」のチェックを外しておきます。
これは、「[テーブル1]というフォームの、[コンボ1]の値と同じモノ」という意味です。
よく使うテクニックですので覚えておきましょう。
続いて、フィールドに[編]を追加し、クエリビルダを閉じます。

もうひと踏ん張り。
[コンボ1]に戻り、プロパティシートのイベントタブから「更新後処理」の「...」をクリック、
「マクロビルダー」を選択して、OKします。
マクロの新規作成画面が出てきますので、
アクションに「再クエリ」、コントロール名に「コンボ2」と設定し、ビルダを閉じましょう。
保存するか?聞かれますので、ちゃんと保存しておきましょう。
ちなみにこれは、「[コンボ1]の値が更新されたら[コンボ2]の選択肢を再読み込みしなさい」の意味です。

基本的にはこれで完成です。
フォームビューにして、テストしてみましょう。
[コンボ1]には「A・B・C」の選択肢が出てきますので、「A」を選択。
そうすると[コンボ2]の選択肢は「AAA・BBB・CCC」の三種類が出てくるはず。
続いて、[コンボ1]の値を「B」にしてやると、
今度は[コンボ2]の選択肢は「DDD・EEE」の二種類に変わっているはずです。

これが確認できたら、二段階の絞込は完成です。
三段階・四段階と増やしていくのも、基本的には同じ作業の繰り返しです。
が、例えば「コンボ1から選択し、コンボ2を飛ばしてコンボ3を操作しようとした時」だとか、
「コンボ1~3を滞りなく操作したが、気が変わってコンボ1の値を変更した時」だとか、
そんなイレギュラーなケースを抑制する仕組みと言うのも考えた方が良いかもしれません。



以上、参考まで。

※「アクセス コンボボックス 絞込」といった検索ワードで探すと
 有用な情報がヒットしてくれますから、そちらも参考になさってくださいませ。
 確かに2003⇒2007で操作方法がガラリと変わりましたが、
 基本的な考え方(用語など)はほとんど変わっていません。
 「2007でも、どこかにその操作方法があります」ので、
 「見た目が違うからわかんねー(涙)」と思う前に、
 2007での基本の操作方法を探してみましょう。
 保存してある限り、前の状態には戻せるのですから、
 恐れずにアレコレいじってみるのが上達への一番の近道です。
 「困ったら右クリック」で何とかなることも多いですよ(笑)。


 なんて偉そうに言ってる私も、2007に慣れるまでかなり時間がかかりました(大汗)。
 さすがに慣れましたが、やっぱり私は2003が好きだなぁ、
 とシミジミ思う今日この頃ではあります(涙)。

投稿日時 - 2013-08-02 14:09:04

お礼

まだ無理だろうなと思って見てみたら、もう回答が(^^)
ありがとうございます。これで作業が進捗します。

で、早速簡単な構造でテストしてみたら、無事動きました。

サイトにしても、本にしてもテーブルや、コンボボックスにやたらと「商品」「得意先」など名前を付けて説明しているので、一体何処を参照しているのか分からなくなって、大変でした。説明頂いたように「フォーム1」「コンボ1」と書いてもらえたら、大体の流れがつかめました。

2007しかさわっていないので分かりませんが、クエリを含め全ての情報が、いろいろな方法で入力できるので余計混乱しますね。私のように、エクセルを多用した人間は、逆に構文で書いた方がよく分かったり・・・

これから、多段式のコンボボックスに挑戦してみます。
本当にありがとうございました。

投稿日時 - 2013-08-02 15:57:45

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問