SSブログ

コンボボックスの値をクエリの条件にして 次のコンボボックスにクエリ結果を表示

うーん タイトルって難しい・・・
1つ目のコンボボックスで指定した条件で 2つ目のコンボボックスの内容が変わってほしいのだ。
で 私は ツマヅイタ。
1つ目のコンボボックスで指定した条件を変更したのに 2つ目に表示されるのは変更前なのねぇ。
1つ目のコンボボックスの値を塗り替えたら2つ目も塗り替えられて欲しいのだ。
 
たとえば 利用者を登録しようとした場合で 日本各地(地区)に沢山の支店(拠点)があって登録するときに 地区を選んだら(1つ目のコンボボックス) その地区の支店だけを次のコンボボックス(2つ目のコンボボックス)に表示したいじゃーん。

だって日本中の数百(おおげさ)の支店名が ずらーーーとコンボボックスに表示されたら 選べない(面倒)。
つか コンボボックスの意味ないし(手入力した方が早いし)
でも2つ目のコンボボックスの支店名を選択したら、支店コードが隣のテキストボックスに自動で入ってほしいの。
数百(おおげさ)の支店コードなんて頭に入らないジャン。
そもそも覚える気もないけど・・・(←それが給与査定に反映)
コード表を探して手入力も面倒。(←面倒くさがり過ぎ)

03.jpg
こんなフォーム(<F_初期入力>と命名)があるとして 『地区』のコンボボックスで入力すると
次の『拠点』のコンボボックスには『地区』で入力された条件のデータが表示されて
『拠点』のコンボボックスを入力すると 隣の『拠点コード』が自動で入ってほしいの。


というか ちょっちビールをタシナミまして ぽやーんとしている中の更新です。
えーい いってまえ。(失礼な表現、言動 また分かりづらい点が多々あるかと思われますがご容赦ください)


拠点の情報(データ)テーブルはこんな感じ だと想定します。<T_拠点>と命名
01.jpg

まずは 1つ目のコンボボックス『地区』に表示されるクエリを作成。
T_拠点の項目「地区」をグループ化 <Q_地区グループ化> と命名
02.jpg
結果↓
04.jpg
Q_地区グループ化が1つ目のコンボボックス<Cmb地区>に表示するように フォームを設定します。
Cmb地区の「値集合ソース」に Q_地区グループ化を入力

05.jpg
結果↓
06.jpg
ここで『名古屋』をチョイスしたら 次のコンボボックスで名古屋の拠点だけ表示するようにクエリを作成。
T_拠点テーブルの必要な項目(使う項目)は
「拠点コード」「拠点名」「地区」 で この「地区」が F_初期入力のCmb地区に入力されたのを抽出。
※拠点名は次のコンボボックスに表示されてほしい。拠点コードは次の次のテキストボックスに表示させたい。
Like [FORMS]![F_初期入力]![Cmb地区] 
・・・Likeは抽出を「あいまい」にしてます。これ入れるとエラーが少ない気がする。何しろバージョンが古いんで・・・
結果に地区は表示されなくていいので表示のチェックを外しておきます。<Q_拠点選択後>と命名。
07.jpg

↑のクエリ結果がコンボボックス『Cmb拠点名』で表示されるように設定。
Cmb拠点名の値集合ソースにQ_拠点選択後と入力
08.jpg
で 他の設定をしないと コンボボックスには一番左の項目 拠点コードしか表示されないという悲しい状態になります。
09.jpg
つか 拠点コードじゃなくて 拠点名が表示されてほしいじゃん。
拠点名は2つ目の項目なので 2つ目の拠点名だけ表示されるようにCmb地区のプロパティ―を設定します。

列数 2 (←項目が2つ)
列幅 0cm;4cm (←1つ目一番左の項目の幅は0cmで 2つ目は4cm)
001.jpg

じゃーん
002.jpg
拠点名が表示されましたがな。

んが ここで 1つ目の地区コンボボックスを別の地区に塗り替えても拠点コンボボックスが塗り変わらないのね。
名古屋から田原に変更しても 拠点名は名古屋地区のモノのまま。悲しい。
003.jpg

なので、1つ目コンボボックスが更新されたら2つ目コンボボックスがリセットされるように設定。
Cmb地区 の 更新後処理 に イベントプロシージャ―を設定
004.jpg

で↓を入力 Cmb地区が塗り替えられたら Cmb拠点名を更新する

Private Sub Cmb地区_AfterUpdate()
Me.Cmb拠点名.Requery
End Sub
005.jpg

すると、なんということでしょう碧南にすれば碧南の拠点が・・・豊田にすれば豊田の拠点が表示されるではありませんか!
劇的ビフォーアフター !感動!(←自己満足です)
006.jpg

で、後は拠点を入力したらその隣の拠点コードが自動で入ってほしい。
Cmb拠点 の 更新後処理 に イベントプロシージャ―を設定
008.jpg

↓これを入力 Cmb拠点名が更新されたら Txt拠点コード(拠点コードテキストボックス)にCmb拠点名のコンボの左から1つ目の項目(ゼロが1つ目)を入力しろよ的な。

Private Sub Cmb拠点名_AfterUpdate()
Me![Txt拠点コード] = Me![Cmb拠点名].Column(0)
End Sub

00001.jpg

で 試してみる
0001.jpg
おお ちゃんと動いてる!
nice!(1)  トラックバック(0) 
共通テーマ:資格・学び

nice! 1

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。