勉強中の初心者です。 色々調べたり試したりしてみたのですがうまくいかないので教えてください。
このようなフォームを作成していて、上がコンボボックス、下がリストボックスになっています。
上のコンボボックスで選んだものに応じて、下のリストボックスに表示される内容を変えたいのですが…
もしも、コンボボックスの値が〇〇だったら、リストボックスに、対応するクエリのデータを表示したいという 感じです。
そもそもできるのかもわからないのですが…
どうぞよろしくお願いします。
リストボックスの値集合タイプは「テーブル/クエリ」ですか。 だとしたら、値集合ソースのテーブルをクエリにして、コンボボックスの値で抽出条件を設定します。 コンボボックスの更新後処理で、リストボックスを再クエリすればいいでしょう。
教えていただきありがとうございます。 色々試行錯誤していて、お返事が遅くなりました。
教えていただいた方法で進めていて、値集合ソースのテーブルをクエリにしました。 ですが、コンボボックスの値で抽出条件の設定がうまくできません…
無知で申し訳ありませんが、方法を教えていただけませんか。 必要な情報があれば明記します。
よろしくお願いします。
下記の情報を提示してもらえますか。
リストボックスの値集合ソースのクエリのSQL文(SQLビューで確認できます)
コンボボックスの下記の設定 値集合ソース 値集合タイプ 連結列 列数 列幅
コンボボックスの更新後処理に設定したマクロまたはVBAコード
お返事ありがとうございます。 一応、調べてみました。 これで大丈夫でしょうか。
リストボックスの値集合ソースのクエリのSQL文(SQLビューで確認できます) SELECT T_内訳.[分類], T_内訳.[内訳] FROM T_内訳;
コンボボックスの下記の設定 値集合ソース T_分類 値集合タイプ テーブル/クエリ 連結列 2 列数 2 列幅 0cm;3cm
コンボボックスの更新後処理に設定したマクロまたはVBAコード ここまで行きついていなくてまだ設定できていなかったです
必要かわからない情報ですが… コンボボックス(cmb_分類)には、T_分類というテーブルの2列目(1列目:コード・2列目:分類名)を表示するようにしていました。 リストボックス(lst_内訳)には、T_内訳というテーブル(1列目:分類名・2列目:内訳)を表示したくて、Q_内訳を作りました。
コンボボックスの分類名と、T_内訳の分類名が一致した場合、リストボックスに該当する内訳を表示したいという感じです。
説明が下手で申し訳ありません。 よろしくお願いします。
回答の前に、テーブル設計の確認ですが、 T_分類 (コード, 分類名) の主キーフィールドは「コード」になってますか。
T_内訳(分類名, 内訳)にはこれ以外のフィールドはないですか。また、主キーフィールドはありますか。 分類名 は T_分類 の 分類名 と同じものが格納されてますか。
お手数をおかけしていて申し訳ありません。色々ありがとうございます。
テーブルについてですが、T_分類も、T_内訳も、主キーの設定をしていませんでした。(必要でしょうか) 両テーブルとも、これ以外のフィールドはありません。 分類名は、同じものが格納されています。
どうぞご教授のほどよろしくお願いします。
今後のことを考えると主キーの設定をした方がいいと思います。 データベースの機能を活かすには主キーの設定は必須と考えていいでしょう。
とりあえず現状でいくなら、 リストボックスの値集合ソースのクエリのSQLを下記のようにします。
SELECT T_内訳.[分類], T_内訳.[内訳] FROM T_内訳 WHERE T_内訳.[分類]=[cmb_分類];
コンボボックスの更新後処理のイベントプロシージャを下記のように記述します。
Private Sub cmb_分類_AfterUpdate() Me.lst_内訳.Requery End Sub
リストボックスの名前は「lst_内訳」と仮定したコードですのでその部分は実際の名前に変換してください。
とりあえずこれでうまくいくはずです。 ただし、 Accessはまがりなりにもデータベースですので、データベース設計の基本を理解せず設計をすすめると、あとで後悔することになります。 テーブル設計については「正規化」という原則があります。まずはこのあたりから学習されることをお勧めします。
ありがとうございました。 教えていただいた方法でちゃんと表示されるようになりました。
基本を理解しないまま、本やネットを調べ調べ作っているのでいけませんね。 教えていただいた、正規化も調べてみました。 ちゃんと時間をとってしっかり学習していこうと思います。
ご丁寧に教えていただき、本当に助かりました。 ありがとうございました。
不適切なコンテンツとして通報するには以下の「送信」ボタンを押して下さい。 現在このグループでは通報を匿名で受け付けていません。 管理者グループにはあなたが誰であるかがわかります。
どのように不適切か説明したい場合、メッセージをご記入下さい。空白のままでも通報は送信されます。
通報履歴 で、あなたの通報と対応時のメッセージを確認できます。
トピックをWIKIWIKIに埋め込む
次のコードをWIKIWIKIのページに埋め込むと最新のコメントがその場に表示されます。
// generating...
プレビュー
Accessのテーブルやクエリのデータを貼り付ける場合は下記で、Markdown書式のテーブルに変換して貼り付けてください。
Markdown Tables generator
ここまでがあなたのコンテンツ
ここからもあなたのコンテンツ
リストボックスの値集合タイプは「テーブル/クエリ」ですか。
だとしたら、値集合ソースのテーブルをクエリにして、コンボボックスの値で抽出条件を設定します。
コンボボックスの更新後処理で、リストボックスを再クエリすればいいでしょう。
教えていただきありがとうございます。
色々試行錯誤していて、お返事が遅くなりました。
教えていただいた方法で進めていて、値集合ソースのテーブルをクエリにしました。
ですが、コンボボックスの値で抽出条件の設定がうまくできません…
無知で申し訳ありませんが、方法を教えていただけませんか。
必要な情報があれば明記します。
よろしくお願いします。
下記の情報を提示してもらえますか。
リストボックスの値集合ソースのクエリのSQL文(SQLビューで確認できます)
コンボボックスの下記の設定
値集合ソース
値集合タイプ
連結列
列数
列幅
コンボボックスの更新後処理に設定したマクロまたはVBAコード
お返事ありがとうございます。
一応、調べてみました。 これで大丈夫でしょうか。
リストボックスの値集合ソースのクエリのSQL文(SQLビューで確認できます)
SELECT T_内訳.[分類], T_内訳.[内訳]
FROM T_内訳;
コンボボックスの下記の設定
値集合ソース T_分類
値集合タイプ テーブル/クエリ
連結列 2
列数 2
列幅 0cm;3cm
コンボボックスの更新後処理に設定したマクロまたはVBAコード
ここまで行きついていなくてまだ設定できていなかったです
必要かわからない情報ですが…
コンボボックス(cmb_分類)には、T_分類というテーブルの2列目(1列目:コード・2列目:分類名)を表示するようにしていました。
リストボックス(lst_内訳)には、T_内訳というテーブル(1列目:分類名・2列目:内訳)を表示したくて、Q_内訳を作りました。
コンボボックスの分類名と、T_内訳の分類名が一致した場合、リストボックスに該当する内訳を表示したいという感じです。
説明が下手で申し訳ありません。
よろしくお願いします。
回答の前に、テーブル設計の確認ですが、
T_分類 (コード, 分類名) の主キーフィールドは「コード」になってますか。
T_内訳(分類名, 内訳)にはこれ以外のフィールドはないですか。また、主キーフィールドはありますか。
分類名 は T_分類 の 分類名 と同じものが格納されてますか。
お手数をおかけしていて申し訳ありません。色々ありがとうございます。
テーブルについてですが、T_分類も、T_内訳も、主キーの設定をしていませんでした。(必要でしょうか)
両テーブルとも、これ以外のフィールドはありません。
分類名は、同じものが格納されています。
どうぞご教授のほどよろしくお願いします。
今後のことを考えると主キーの設定をした方がいいと思います。
データベースの機能を活かすには主キーの設定は必須と考えていいでしょう。
とりあえず現状でいくなら、
リストボックスの値集合ソースのクエリのSQLを下記のようにします。
コンボボックスの更新後処理のイベントプロシージャを下記のように記述します。
リストボックスの名前は「lst_内訳」と仮定したコードですのでその部分は実際の名前に変換してください。
とりあえずこれでうまくいくはずです。
ただし、
Accessはまがりなりにもデータベースですので、データベース設計の基本を理解せず設計をすすめると、あとで後悔することになります。
テーブル設計については「正規化」という原則があります。まずはこのあたりから学習されることをお勧めします。
ありがとうございました。
教えていただいた方法でちゃんと表示されるようになりました。
基本を理解しないまま、本やネットを調べ調べ作っているのでいけませんね。
教えていただいた、正規化も調べてみました。
ちゃんと時間をとってしっかり学習していこうと思います。
ご丁寧に教えていただき、本当に助かりました。
ありがとうございました。