三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

XXXXさんへ Accessで2つのコンボボックスを連動?させるには?

>テーブルに仕入先   仕入先ID 仕入先名
>       担当者   担当者ID 担当者名  仕入先ID 
>があります。
>
>フォームに仕入先と担当者を選択するコンポボックスがあります。
>
>やりたいことは仕入先名をコンポボックスから選択したら、
>担当者の方は仕入先名と同じ会社の担当者のみ表示したい。
>
>いまだと全部の仕入先の担当者が表示されてしまいます。
>
>その方法を教えてください。

やりたいことは、
コンボボックスを2つ作り、
第1 上のコンボボックスで選択されたグループだけを
第2 下のコンボボックスで選択する、
絞り込みながらの選択ですね。

たとえが いいか/適切か わかりませんが、
AKB48のメンバーをテストデータにして、
絞り込みのコンボボックスの練習をしてみたいと思います。

第1 上のコンボボックスで グループを選択する
第2 下のコンボボックスで上記グループのメンバーのみ表示する

現物を動かしながら が わかりやすいと思うので
/vba/zip/qa0720db.zip
を保存して、遊んでみてください。

そのまま、二つのコンボボックスを作成してみた

まずは、何も処理を入れないで、通常の方法でコンボボックスをします。

Accessのフォーム処理で、ウィザードでフォームをざっくり作ります。
その後、マスターを参照したいので、
テキストボックスをコントロールの変更でコンボボックスに変更します。
コンボボックスの値を クエリービルダーを使用して、
マスターテーブルと連動させます。

そんな下準備の操作動画 http://www.youtube.com/watch?v=v5tvuWjfqRI です
www.youtube.com
↑準備で時間がかかりすぎてるけど、、、

やっと、連動処理を入れてみる

ここで、やっと、
Accessのフォーム処理で、
コンボボックス2つを使って、
マスターデータを絞り込む そんな処理をざっくり作ります。

1つ目でグループを選択、
2つ目のコンボボックスは1の値を利用してデータを絞る、そんな処理です。

ポイントは、クエリービルダーを使用して、画面の値とテーブルを連動させます。

1の値が [Forms]![メモinput]![課ID] なので、これを条件に入れる(指定します)
たったこれだけなのですが、
データは生き物?じゃないけど、各処理のタイミングでデータを絞り込んだり、クリアしたりします。

そのために、コードを2つ入れます。

再クエリー .Requery でデータを再度絞り込む
1.コンボボックス2に入ってきたときに、再クエリー処理で、データをきれいにします。
単純に のイベント フォーカス取得時の _Enterにコードを書きます。

Private Sub 担当者ID_Enter()
    Me.担当者ID.Requery  '再クエリー更新
End Sub

Me.担当者ID.Requery 自分自身に対して、再クエリーをかけて、1で選択されたグループのみにデータを絞り込みます。

グループが変更されたら、下のコンボボックスをクリアする

2.上のグループが選択(変更)されたら、2つ目メンバーをクリアーしたいので(グループが変わったので再選択させたい)

単純に更新後の処理 _AfterUpdate で 下のコンボボックスの値を消しただけです。

Private Sub 課ID_AfterUpdate()
    Me.担当者ID.Value = ""  'グループが変更されたらクリア
End Sub

これで、それなりに動くと思います。

試行錯誤の動画、操作・テスト結果は http://www.youtube.com/watch?v=bdrtLlkE-lw を見てください
www.youtube.com
↑前半、調整に手間取り、後半かけ足で説明してますがよろしくです。

終わりの挨拶

現物を動かしながらがわかりやすいと思うので
/vba/zip/qa0720db.zip
を保存して、遊んでみてください

コンボボックス2つの連動処理の参考となれば、、、うれしいです。

三流プログラマー Ken3

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)