Microsoft Access 掲示板

コンボボックスで指定、リストボックスにデータ表示

8 コメント
views
4 フォロー

勉強中の初心者です。
色々調べたり試したりしてみたのですがうまくいかないので教えてください。

このようなフォームを作成していて、上がコンボボックス、下がリストボックスになっています。

画像1

上のコンボボックスで選んだものに応じて、下のリストボックスに表示される内容を変えたいのですが…

もしも、コンボボックスの値が〇〇だったら、リストボックスに、対応するクエリのデータを表示したいという
感じです。

そもそもできるのかもわからないのですが…

どうぞよろしくお願いします。

まき
作成: 2022/07/15 (金) 15:20:45
通報 ...
1

リストボックスの値集合タイプは「テーブル/クエリ」ですか。
だとしたら、値集合ソースのテーブルをクエリにして、コンボボックスの値で抽出条件を設定します。
コンボボックスの更新後処理で、リストボックスを再クエリすればいいでしょう。

2
まき 2022/07/19 (火) 11:47:43 1a61e@3434b

教えていただきありがとうございます。
色々試行錯誤していて、お返事が遅くなりました。

教えていただいた方法で進めていて、値集合ソースのテーブルをクエリにしました。
ですが、コンボボックスの値で抽出条件の設定がうまくできません…

無知で申し訳ありませんが、方法を教えていただけませんか。
必要な情報があれば明記します。

よろしくお願いします。

3

下記の情報を提示してもらえますか。

リストボックスの値集合ソースのクエリのSQL文(SQLビューで確認できます)

コンボボックスの下記の設定
 値集合ソース
 値集合タイプ
 連結列
 列数
 列幅

コンボボックスの更新後処理に設定したマクロまたはVBAコード

4

お返事ありがとうございます。
一応、調べてみました。 これで大丈夫でしょうか。

リストボックスの値集合ソースのクエリのSQL文(SQLビューで確認できます)
 SELECT T_内訳.[分類], T_内訳.[内訳]
 FROM T_内訳;

コンボボックスの下記の設定
 値集合ソース T_分類
 値集合タイプ テーブル/クエリ
 連結列 2
 列数 2
 列幅 0cm;3cm

コンボボックスの更新後処理に設定したマクロまたはVBAコード
 ここまで行きついていなくてまだ設定できていなかったです

必要かわからない情報ですが…
コンボボックス(cmb_分類)には、T_分類というテーブルの2列目(1列目:コード・2列目:分類名)を表示するようにしていました。
リストボックス(lst_内訳)には、T_内訳というテーブル(1列目:分類名・2列目:内訳)を表示したくて、Q_内訳を作りました。

コンボボックスの分類名と、T_内訳の分類名が一致した場合、リストボックスに該当する内訳を表示したいという感じです。

説明が下手で申し訳ありません。
よろしくお願いします。

5

回答の前に、テーブル設計の確認ですが、
T_分類 (コード, 分類名) の主キーフィールドは「コード」になってますか。

T_内訳(分類名, 内訳)にはこれ以外のフィールドはないですか。また、主キーフィールドはありますか。
分類名 は T_分類 の 分類名 と同じものが格納されてますか。

6

お手数をおかけしていて申し訳ありません。色々ありがとうございます。

テーブルについてですが、T_分類も、T_内訳も、主キーの設定をしていませんでした。(必要でしょうか)
両テーブルとも、これ以外のフィールドはありません。
分類名は、同じものが格納されています。

どうぞご教授のほどよろしくお願いします。

7

今後のことを考えると主キーの設定をした方がいいと思います。
データベースの機能を活かすには主キーの設定は必須と考えていいでしょう。

とりあえず現状でいくなら、
リストボックスの値集合ソースのクエリのSQLを下記のようにします。

SELECT T_内訳.[分類], T_内訳.[内訳]
FROM T_内訳
WHERE T_内訳.[分類]=[cmb_分類];

コンボボックスの更新後処理のイベントプロシージャを下記のように記述します。

Private Sub cmb_分類_AfterUpdate()
   Me.lst_内訳.Requery
End Sub

リストボックスの名前は「lst_内訳」と仮定したコードですのでその部分は実際の名前に変換してください。

とりあえずこれでうまくいくはずです。
ただし、
Accessはまがりなりにもデータベースですので、データベース設計の基本を理解せず設計をすすめると、あとで後悔することになります。
テーブル設計については「正規化」という原則があります。まずはこのあたりから学習されることをお勧めします。

8
まき 2022/07/20 (水) 17:01:53 1a61e@3434b

ありがとうございました。
教えていただいた方法でちゃんと表示されるようになりました。

基本を理解しないまま、本やネットを調べ調べ作っているのでいけませんね。
教えていただいた、正規化も調べてみました。
ちゃんと時間をとってしっかり学習していこうと思います。

ご丁寧に教えていただき、本当に助かりました。
ありがとうございました。