質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

Q&A

解決済

1回答

1697閲覧

絞り込みコンボボックスの応用について

techiko

総合スコア10

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

0グッド

0クリップ

投稿2021/09/29 01:50

編集2021/09/29 07:43

フォームに、クエリを使用した2つの絞り込みコンボボックスがあります。
1つ目で都道府県を選択すると、2つ目に該当する市名のみが表示されるものです。

このコンボボックスを
該当する値がある場合は、その値を自動入力されるように
該当する値がない場合は、絞り込みで使用できるようにしたいですが
可能でしょうか?

該当する値についてですが
納品先テーブル内に
納品先名
都道府県名
市名
があります。

同じフォーム内に、別のコンボボックスで
納品先を選択する形となっています。

この納品先を選択した際に
都道府県名・市名 の値がテーブルに入力されている場合には
その値をコンボボックスに自動で表示させたいです。

値が入力されていない場合(テーブルが空欄)の場合は
絞り込みコンボボックスとして使用したいです。

よろしくお願いいたします。

windows10/Access2019

追記======================

今回使用したいのは次の2つのテーブルとなります。

「納品先」テーブル
イメージ説明

「都道府県」テーブル
イメージ説明

「発送」フォーム
イメージ説明

納品先 コンボボックス にて 納品先を選択

絞り込みコンボボックスは「お届け先」の2つとなります。

お届け先左側、「発送先」コンボボックスで都道府県を選ぶ
「Q_都道府県」クエリを使用し、都道府県を選択できるようにしています。
イメージ説明

更新後処理に次のコードを入れています。

Private Sub 発送先_AfterUpdate() DoCmd.Requery "市区町村" End Sub

お届け先右側、「市町区村」コンボボックスは
「Q_市区町村」クエリを使って市名を絞り込み表示させています
イメージ説明

この2つのコンボボックスに
納品先テーブルに「都道府県」「市町村」が入力されている場合には
自動入力をし、
入力がされていない場合は、コンボボックスより選択をしたいです。

修正===========

すみません、修正します。

>納品先テーブルに「都道府県」「市町村」が入力されている場合には
>自動入力をし、
>入力がされていない場合は、コンボボックスより選択をしたいです。

自動入力された場合でも、届け先が違う場合には
コンボボックスより選択できる状態にしたいです。

追記==========
入力フォーム
「発送」テーブル
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2021/09/29 02:16

現状どこまでできているのでしょうか。 現状のフォーム内の構成(コンボボックス名やテキストボックス名)、 現状のコード、等を提示してください。 でないと、単なる製作依頼になり、推奨されない質問になります。 https://teratail.com/help/avoid-asking
techiko

2021/09/29 06:02

情報不足、申し訳ありませんでした。 現状を追記しました。
hatena19

2021/09/29 06:59

画像の入力フォームのレコードソースの設定はどうなってますか。 テーブルならその名前とフィールド構成、 クエリならSQLを提示してください。
techiko

2021/09/29 07:44

ありがとうございます。 入力フォームのレコードソースはテーブルで「発送」 構成は画像を貼りました。
guest

回答1

0

ベストアンサー

テーブル設計が正規化されていない部分が目につきますが、今回はそれはスルーしておくとして、
機会があったら「テーブル 正規化」で検索してみて、解説ページで勉強してみてください。
(ここから手を付けると、大変なことになるので)

まだ、情報不足なところがありますが、とりあえず推測を交えて、
納品先コンボボックスの設定が下記になっているとします。
なっていなかったら、このように設定するのは推奨します。

名前 納品先
値集合ソース 納品先
列数 5
列幅  ocm;3cm

列数を5とすることで、テーブルの5つ目までのデータを取得できます。

例えば、都道府県は4列目なので、
Me.納品先.Column(3)
で取得できます。
インデックスは0から始まるため、4列目ならインデックスは3です。

ということで、

vba

1Private Sub 納品先_AfterUpdate() 2 Me.都道府県 = Me.納品先.Column(3) 3 Me.市町区村 = Me.納品先.Column(4) 4End Sub

で都道府県名と市区町村は表示できます。
納品先にテーブルに登録されてなかったら、空欄のままです。

投稿2021/09/29 07:57

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

techiko

2021/09/29 08:14

列数 5 に変更、コードを追加 で 思う通りの動きとなりました。 知識不足、情報不足な質問に回答くださり どうもありがとうございました。 テーブルの正規化、検索しました。 もう少しちゃんと勉強してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問