目次
コンボボックスの選択が面倒
こんにちは。伊川(@naonaoke)です。
連動コンボボックスとDLOOKUP関数のコラボレーションを紹介します。
連動コンボボックスは確かに便利なのですが、選択が面倒というデメリットがあります。
今回は、3連動のコンボボックスを作成します。
そこに、DLOOKUP関数がコラボします。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は、同僚から下記のような苦言がありました。
・ACCESSの連動コンボボックスの選択が面倒だ。
・せめて、2回までの選択にしてほしい。
オートルックアップクエリは使えないので、困っています。
なにか良い方法はないだろうか?
解決策
・3連動のコンボボックスにDLOOKUP関数を使う
3連動のコンボボックスを作成する
作成手順 その1 データベースを確認する
「大分類」⇒「中分類」⇒「名前」この順に選択をします。
一番カンタン方法は、自分で主キーを作ります。
ただし、あまりカッコよくありません。
上の図の、検索キーが、このテーブルの主キーになっています。
作成手順 その2 フォームを作成して、コンボボックスの設定をする(フォーム3を使う)
上の図のようなフォームを作成します。
大分類のコンボボックスは、上の図のように作成します。
中分類のコンボボックスは、上の図のように作成します。
名前のコンボボックスは、上の図のように作成します。
連動コンボボックスの作成に自信のない方はは下記の記事を読んでください。
大分類、中分類の更新後処理に上の図のようなコードを記載します。
これで3連動コンボボックスの完成です。
3連動のコンボボックスにDLOOKUP関数をコラボする Prat1(フォーム1を使う)
この赤枠の主キーでDLOOKUP関数を使って、名前を表示します。
中分類までのコンボボックスの作り方は、同じです。
中分類の更新後処理にDLOOKUP関数のコードを仕込みます。
Private Sub 中分類_AfterUpdate() Dim a As String a = Me.[大分類] & Me.[中分類] Me.名前 = DLookup("名前", "MT_ヒーロー", "検索キー='" & a & "'") End Subっさ
3連動コンボボックスにDLOOKUP関数をコラボする Prat2(フォーム2を使う)
このように、言葉と言葉を組合わせて、主キーを作るのは、かっこ悪いと思っている人がいると思います。
その場合は、DLOOKUP関数は、複数条件も設定できます。
Private Sub 中分類_AfterUpdate() Dim a As String Dim b As String a = Me.[大分類] b = Me.[中分類] Me.名前 = DLookup("名前", "MT_ヒーロー", "大分類 = '" & a & "' and 中分類 = '" & b & "'") End Sub
これで完成です。
しかし、伊川としては、オートルックアップクエリをお勧めします。
ここがポイント
データベースの中にあるビジンダーですが、下記のキャラです。
若き日の志保美悦子さんの変身前がビジンダーです。
この解答を作成したときに、ビジンダーがわからないといわれました。
私は、ACCESSを説明するときに、ヒーローものでデータベースを作成します。今日、ブログの書起しをしていたら、ビジンダーの記載がありました。若き日の志保美悦子さんです。一度、新幹線で見かけましたが、綺麗でした。
まとめ
みなさんが、ACCESSで技を使うときは、TPOを考えましょう。どんな技でも、適合していないと意味がありません。みなさんは、どのパターンを使いますか?
今回のサンプルファイルは、No50です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。